对于使用 DB2 数据库的用户,有时有需要将表中数据清空的需求,这里提供了四种数据删除的方法,以供用户根据自己的需求进行选择:
1. 使用 DELETE 语句,即:
DELETE FROM
<表名>
该语句将清除表中所有数据,但由于这一操作会记日志,因此执行速度会相对慢一些,另外要注意的是,如果表较大,为保证删除操作的成功,应考虑是否留有足够大的日志空间。
2. 使用 NOT LOGGED INITIALLY 选项,即:
ALTER TABLE
<表名>
ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE
这一方法仅在所操作的表在创建时选择了 NOT LOGGED INITIALLY 选项进行定义后才可使用。整个删除操作将不会记日志,因此执行速度是几种方法中最快的一种,但删除的数据是不可恢复的。
3. 使用 IMPORT 或 LOAD 命令,即:
IMPORT FROM /dev/null OF DEL REPLACE INTO
<表名>
--(Unix 系统)
或 IMPORT FROM
<空文件>
OF DEL REPLACE INTO
<表名>
LOAD FROM /dev/null OF DEL REPLACE INTO
<表名>
NONRECOVERABLE --(Unix 系统)
或 LOAD FROM
<空文件>
OF DEL REPLACE INTO
<表名>
NONRECOVERABLE
在这一方法中,REPLACE 导入方式首先会将表中所有数据清空,然后 IMPORT/LOAD 又向表中导入了空数据,从而实现了数据的清除操作。
4. 使用 DROP/CREATE TABLE 语句,即:
DROP TABLE
<表名>
CREATE TABLE
<表名>
<字段的定义>
如果保存有表的定义语句,或已利用 DB2LOOK 命令获得了表定义的脚本,也可先删除整个表,再重新创建表。如果表较大,用这种方法实现数据清空的速度会快于方法一。
如果要实现truncate table的效果,就用IMPORT FROM 空文件的方法,用其它方法都不好。
------------------------------------------------------------------------------------------------------------
import from /dev/null of del replace into schema_name.table_name
--/dev/null, this is a special file in Unix ,itself is null