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

我们要往一个数据表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同行回答

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

提问者

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

相关问题

相关资料

相关文章

问题状态

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