标题: 清空 DB2 表中数据的几种方法
darkbug
超级版主
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17


UID 187
精华 12
积分 2224
帖子 4133
活跃指数 247
LU金币 3382 个
LU金条 161170 个
阅读权限 251
注册 2003-9-28
 
发表于 2007-7-21 15:59  资料  个人空间  短消息  加为好友  添加 darkbug 为MSN好友 通过MSN和 darkbug 交谈
清空 DB2 表中数据的几种方法

对于使用 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 命令获得了表定义的脚本,也可先删除整个表,再重新创建表。如果表较大,用这种方法实现数据清空的速度会快于方法一。





踏踏实实学习,认认真真干活
顶部
beginner-bj
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15


UID 9471
精华 15
积分 1369
帖子 2357
活跃指数 186
LU金币 4352 个
LU金条 0 个
阅读权限 210
注册 2004-1-16
 
发表于 2007-7-22 23:22  资料  个人空间  短消息  加为好友 
如果要实现truncate table的效果,就用IMPORT FROM 空文件的方法,用其它方法都不好。





我的博客:http://blog.chinaunix.net/index.php?blogId=739欢迎访问,并请多多批评指正。
顶部
whiterain
LU新生
Rank: 1



UID 30963
精华 0
积分 5
帖子 8
活跃指数 0
LU金币 2003 个
LU金条 0 个
阅读权限 10
注册 2005-4-11
 
发表于 2007-7-23 07:50  资料  个人空间  短消息  加为好友 
方法无所谓好不好,要找合适的!

顶部
beginner-bj
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15


UID 9471
精华 15
积分 1369
帖子 2357
活跃指数 186
LU金币 4352 个
LU金条 0 个
阅读权限 210
注册 2004-1-16
 
发表于 2007-7-23 13:07  资料  个人空间  短消息  加为好友 
在任何情况下都是最合适的方法,显然是最好的





我的博客:http://blog.chinaunix.net/index.php?blogId=739欢迎访问,并请多多批评指正。
顶部
fck
LU幼天使
Rank: 2



UID 87914
精华 0
积分 152
帖子 257
活跃指数 24
LU金币 275 个
LU金条 0 个
阅读权限 20
注册 2007-4-9
 
发表于 2007-7-27 17:13  资料  个人空间  短消息  加为好友 
什么是"truncate table"?
另外,如果用的是循环日志模式,是否用delete删除后,一样不能恢复数据呢?(已经提交了)

顶部
beginner-bj
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15


UID 9471
精华 15
积分 1369
帖子 2357
活跃指数 186
LU金币 4352 个
LU金条 0 个
阅读权限 210
注册 2004-1-16
 
发表于 2007-7-27 20:24  资料  个人空间  短消息  加为好友 
第一个问题
http://www.google.cn/search?comp ... _zh-CN%7Clang_zh-TW

第二个问题 google 时间点恢复





我的博客:http://blog.chinaunix.net/index.php?blogId=739欢迎访问,并请多多批评指正。
顶部
zdygk
荣誉斑竹
Rank: 14Rank: 14Rank: 14Rank: 14
极品果壳大将军


LU爱心使者  
UID 114
精华 17
积分 1263
帖子 2399
活跃指数 107
LU金币 1022 个
LU金条 16619 个
阅读权限 200
注册 2003-9-24
 
发表于 2007-7-28 03:10  资料  个人空间  主页 短消息  加为好友 
方法2 需要给developer alter 权限。权力有点大了。





天佑中华   祝福同胞

Major :  ETL AIX+JAVA+DB2
Hobby: shell+os-developer

DB2 is the Best Pure RDBMS; Oracle is an aspirant
顶部
showbu
LU幼天使
Rank: 2



UID 93432
精华 0
积分 20
帖子 36
活跃指数 2
LU金币 38 个
LU金条 0 个
阅读权限 20
注册 2007-7-26
 
发表于 2007-8-14 14:47  资料  个人空间  短消息  加为好友 
不错,对我的实际工作很有用

顶部
 



当前时区 GMT+8, 现在时间是 2008-7-7 06:55
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.106220 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver - WAP