在同一个数据库中将表s_link_data(230万行)中的数据选择(140万行)插入到s_link(90万行)中去,如何快速操作!
数据量太大,会提示数据库日志已满!可利用字段分批导入查出来都是10几万的记录,我写的语句如下
- SQL code
insert into S_LINK(ID,C_USERTABLE_ID,C_RECID,C_FILENAME,C_FILETITLE,C_TYPE,I_SIZE, C_UPLOADUSER_ID,D_UPLOADDATE,C_FTPHTTP_ID, C_GUIDNAME,I_ORDER,I_INDEX,C_SOURCE,C_LSSJ )select ID,C_USERTABLE_ID,C_RECID,C_FILENAME,C_FILETITLE,C_TYPE,I_SIZE, C_UPLOADUSER_ID,D_UPLOADDATE,C_FTPHTTP_ID, C_GUIDNAME,I_ORDER,I_INDEX,C_SOURCE,'1'from s_link_data where s_link_data.id not in(select id from s_link)
请问需要如何修改,才能在短时间内结束呢?
数据库版本DB2 V9
------解决方案--------------------------------------------------------
你先导出,然后再装载,这样会很快的,只记录少量的日志
------解决方案--------------------------------------------------------
你先导出,然后再装载,这样会很快的,只记录少量的日志
------解决方案--------------------------------------------------------
用not exists实现
或者先导出在导入,可以5000条一提交。。。
------解决方案--------------------------------------------------------
那说明你分批的条件不对。重新写条件,或者另寻思路,比如导出导入。
------解决方案--------------------------------------------------------
你参考以下楼上的意见,试试吧
------解决方案--------------------------------------------------------
数据量太大,会提示数据库日志已满!
如果这样,只能分批导入。加些条件吧。
------解决方案--------------------------------------------------------
用export 和load。
------解决方案--------------------------------------------------------
可以用load cursor的方法嘛!
db2 declare cur1 cursor for select * from A with ur
db2 load from cur1 of cursor insert into b statistics yes nonrecoverable
具体列按照你需要的来就行了