insert 大量数据 的一个问题

lds88 2006-08-14 05:17:00
在做一个ORACLE 到DB2的迁移项目
原ORACLE平台Insert 大量数据时采取以下步骤
1.disable constraints(PK)
2.insert data into TB1
3.enable constraints(PK) EXCEPTIONS INTO Tlog(有异常则记入log表),
4.根据LOG表记录删除TB1中有主键冲突的记录至只有一条
5.enable constraints(PK)

请教诸位在DB2中如何实现类似操作?

...全文
689 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
badboy213 2006-12-06
  • 打赏
  • 举报
回复
因为直接用LOAD是不可以在过程中运行的,
你可以在过程中使用系统存储过程:SYSPROC.DB2LOAD
过程中定义变量先:
DECLARE SQLSTATE CHAR(5);
DECLARE SQLCODE INTEGER;
DECLARE SQLMESSAGE VARCHAR(2048);
DECLARE ROWS_READ BIGINT;
DECLARE ROWS_SKIPPED BIGINT;
DECLARE ROWS_LOADED BIGINT;
DECLARE ROWS_REJECTED BIGINT;
DECLARE ROWS_DELETED BIGINT;
DECLARE ROWS_COMMITTED BIGINT;
DECLARE ROWS_PART_READ BIGINT;
DECLARE ROWS_PART_REJECTED BIGINT;
DECLARE ROWS_PART_PARTITIONED BIGINT;
DECLARE MPP_LOAD_SUMMARY VARCHAR(32672);
DECLARE CURSOR_STATEMENT VARCHAR(32672);
DECLARE LOAD_COMMAND VARCHAR(32672);

SET CURSOR_STATEMENT=' declare mycursor cursor for select * from table1)';
SET LOAD_COMMAND='load from mycursor of cursor insert into table2' ;

CALL SYSPROC.DB2LOAD(8,--DB2版本
CURSOR_STATEMENT,
LOAD_COMMAND,
SQLCODE,
SQLMESSAGE ,
ROWS_READ ,
ROWS_SKIPPED ,
ROWS_LOADED ,
ROWS_REJECTED ,
ROWS_DELETED ,
ROWS_COMMITTED ,
ROWS_PART_READ ,
ROWS_PART_REJECTED ,
ROWS_PART_PARTITIONED ,
MPP_LOAD_SUMMARY
);

cutcutcutcut 2006-11-07
  • 打赏
  • 举报
回复
问题是,你的数据源是什么形式?存储过程做插入也需要源呀.
tonybest 2006-09-01
  • 打赏
  • 举报
回复
dreamofsky 您好!佩服 小弟只有玩过在实时数据库eXtremeDB中插入海量记录.有新学了一手 谢谢
dreamofsky 2006-08-16
  • 打赏
  • 举报
回复
呵呵,如果是客户端的话要加client
db2 "load client from /路径/*.txt of del insert into 表名(字段)注,也可以不指定字段
lds88 2006-08-15
  • 打赏
  • 举报
回复
谢谢!
有无对应的sql
我想在存储过程中调用
songfrh 2006-08-14
  • 打赏
  • 举报
回复
使用
load from *.txt of del insert into TB1

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧