[DB2问题]一个数据量很大的表,怎样快速清空?用import?[已解决] ...

数据库版本:DB2 7.2由于表的数据量很大,用delete删除,特别的慢。在网上看到建议使用下面这条语句:import from empty.del of del replace into test_table注:empty.del 是空文件可是这个空文件该放哪里?这个命令怎么能找到这个文件?网上说,跟lob path有关-----2005/03/25---再次补充在windows里面,下面这句实现了。import from c:empty.txt of del replace into 目标表名注:empty.txt 是随便建立的空文本文件就可以。感谢各位的关注.下面继续研究java调用这个命令。

第1个回答  推荐于2018-05-07
感谢:上面四位侠客的回答!我执行下面这条语句成功,指定了空文件的绝对路径(我的环境是:win2000,DB2 7.2)import from c:/empty.del of del replace into 目标表名 (成功)但是下面这条却没有成功,报错说目录找不到。IMPORT FROM /dev/null OF DEL REPLACE INTO 目标表名 (失败)是操作系统的原因吗??本回答被网友采纳
第2个回答  2019-08-04
转过来的,希望对你有用 <a href="https://wenwen.sogou.com/login/redirect?url=http%3a%2f%2fwww-900.ibm.com%2fcn%2fsupport%2fforum%2fapp%2ftscforum%2ftopic%3ftid%3d47273" target="_blank">http://www-900.ibm.com/cn/support/forum/app/tscforum/topic?tid=47273</a>当用delete table命令删除整个表中数据时,该操作会逐条删除表中记录,并记入活动的交易日志。当表中数据量很大时,如果活动的交易日志不够大,就会遇到交易日志已满的错误,并回滚日志。即使活动的交易日志足够大,删除数据量很大的表的操作也会占用很多时间。用以空文件为数据文件导入(import)并替换(replace)表的办法可以解决这个问题。例如 import from /dev/null of del replace into 目标表名 这样交易日志只会记录下该条命令,并立即释放所占的空间,而不会像删除命令一样逐条扫描记录,这就类似于drop掉该表再创建一个完全相同只是没有数据的表一样。对于属于dms表空间的表来说,删除命令逐条扫描记录,所占的记录空间仍标记为该表所用,而不立即释放空间,需要用reorg命令才可以释放剩余空间。用 list tablespace show detail 可以对比两条命令执行后表空间中的剩余空间的大小。 用load命令加replace参数可以达到类似import命令加replace的效果,但是由于load本身不记日志,所以对于可恢复的数据库,load完成后建议马上做一下联机备份的,相比之下,import命令加replace操作上比较简单一些。
第3个回答  2013-09-20
load from a.del of del replace into table会更快!!
第4个回答  2013-09-20
我的环境是win2000,DB2 7.2。/dev/null 换成devnull也不行啊非要用个空文件吗,有没有不用空文件的方法?
第5个回答  2013-09-20
DOS、Windows 环境下标准空文件是 NUL, 等价于UNIX的/dev/null
相似回答