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

我们要往一个数据表customer里加载30万个数据行,如何在加载数据行时避免长事务?我们可以采取以下两种方式之一:(1)使用 raw table例如:     alter table customer type (raw);        load from '/opt/IDS115New/bank/cus...显示全部
我们要往一个数据表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

查看其它 6 个回答zxe的回答

zxezxe软件开发工程师建行
学习!!!!!
互联网服务 · 2010-09-13
浏览1069

回答者

zxe
软件开发工程师建行

zxe 最近回答过的问题

回答状态

  • 发布时间:2010-09-13
  • 关注会员:0 人
  • 回答浏览:1069
  • X社区推广