如何在加载大量数据行时避免长事务

我们要往一个数据表customer里加载30万个数据行,如何在加载数据行时避免长事务?

我们可以采取以下两种方式之一:

(1)使用 raw table
例如:
     alter table customer type (raw);
        load from '/opt/IDS115New/bank/customer.unl' delimiter '|' insert into customer;
        alter table customer type (standard); //执行完这条SQL语句后最好进行一次备份

(2)使用 dbload 命令 (dbload是一个Utility,不是SQL语句)
dbload命令的语法如下:
    dbload -d -c -l -n
               -e
其中:
    是数据库的名字
    是命令文件的名字
    是用于记录“发生错误的数据行”的文件
    用于定义多少个数据行commit一次,这样可以避免长事务
    用于定义dbload遇到多少个错误的数据行后不再继续运行

dbload示例:
    dbload -d db1 -c customer.cmd -l customer.log -n 100 -e 10

customer.cmd是一个命令文件,该文件的内容是:
      FILE customer.unl DELIMITER '|' 3;
      insert into customer;
customer.cmd文件第一行里的customer.unl是一个文件。customer.unl文件里存着要加载的数据。
customer.cmd文件第一行末尾的3表示一个数据行(row)有3个域(field),我们可以根据具体情况修改这个数字。

dbload的具体细节请参看《IBM Informix Migration Guide》的第九章“The dbload Utility”。
参与7

7 同行回答

filvyo filvyo 系统工程师 B
转发微博.显示全部
转发微博. 收起
互联网服务 · 2012-04-19
浏览1135
aestartll aestartll 运维工程师 安能
dbload没用过哇显示全部
dbload没用过哇 收起
电信设备制造商 · 2012-04-19
浏览1046
sikolee sikolee 系统管理员 sino
不错,学习了显示全部
不错,学习了 收起
政府机关 · 2012-03-10
浏览1083
放牛娃 放牛娃 研发工程师 boco
用dbload吧,load不怎么好使的显示全部
用dbload吧,load不怎么好使的 收起
系统集成 · 2012-01-04
浏览1112
nanking nanking 系统工程师 中科软科技股份
学习了~~~~~~~~显示全部
学习了~~~~~~~~ 收起
互联网服务 · 2011-12-23
浏览1135
为你停留 为你停留 其他 PICC
dbload?...显示全部
dbload?... 收起
政府机关 · 2010-10-08
浏览1089
zxe zxe 软件开发工程师 建行
学习!!!!!显示全部
学习!!!!! 收起
互联网服务 · 2010-09-13
浏览1100

提问者

stephen
系统工程师
擅长领域: 数据库
评论19

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2010-08-31
  • 关注会员:0 人
  • 问题浏览:6389
  • 最近回答:2012-04-19
  • X社区推广