Chinaunix

标题: oracle 11g 中能用sqlldr 同时装载一条记录到二个有约束的表中? [打印本页]

作者: alihoney    时间: 2010-08-02 11:46
标题: oracle 11g 中能用sqlldr 同时装载一条记录到二个有约束的表中?
oracle 11g 中能用sqlldr 同时装载一条记录到二个有约束的表中,如

二表:

CREATE TABLE "SCOTT"."TESTSQLLDRA"
( "TESTSQLLDR" CHAR(10),
"TESTSQLLDRNO" NUMBER,
CONSTRAINT "TESTSQLLDRPK" PRIMARY KEY ("TESTSQLLDRNO"));  

CREATE TABLE "SCOTT"."TESTSQLLDRB"
( "TESTSQLLDRNAME" CHAR(10),
"TESTSQLLDRNO" NUMBER,
CONSTRAINT "TESTSQLLDRBPK" PRIMARY KEY ("TESTSQLLDRNO"),
CONSTRAINT "TESTSQLLDRBFK" FOREIGN KEY ("TESTSQLLDRNO")
REFERENCES "SCOTT"."TESTSQLLDRA" ("TESTSQLLDRNO") ENABLE);

要装载的数据格式:

123,aaa,bbb,

要将123和aaa导到 TESTSQLLDRA, 123和bbb 导到TESTSQLLDRB,要求是这条记录要么同时成功插入二表要么同时失败。

请教各位大虾。。。。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alihoney/archive/2010/08/02/5781997.aspx
作者: renxiao2003    时间: 2010-08-02 13:04
  1. LOAD DATA
  2. INFILE 'aa.txt'
  3. INTO TABLE testsqlldra
  4. FIELDS TERMINATED BY ','
  5. (
  6. testsqlldrno position(1:3),
  7. testsqlldr position(5:7)
  8. )
  9. INTO TABLE testsqlldrb
  10. FIELDS TERMINATED BY ','
  11. TRAILING NULLCOLS
  12. (
  13. testsqlldrno position(1:3),
  14. testsqlldrname position(9:11)
  15. )
复制代码
这样就可以导入了。但是如果你的每行的值的长度不固定,就不能用这个。
目前长度不固定的我还没有找到方法。
作者: duolanshizhe    时间: 2010-08-02 13:14

作者: alihoney    时间: 2010-08-03 10:07
谢谢2楼的你!!!用position是可以做到定长的。因为数据文件每行的值的长度不固定,所以才发贴。。。
作者: renxiao2003    时间: 2010-08-03 14:23
不定长的暂时没有好的解决办法。不定长的要实现当第一个表导完后,指针自动回到行首。如果这点能解决,那就比较简单了。
作者: alihoney    时间: 2010-08-06 12:02
能不能用when子句和terminated by $来使指针自动回到行首?
作者: renxiao2003    时间: 2010-08-06 12:07
terminated by $就是按字段导入,字段自动后移啊。
作者: renxiao2003    时间: 2010-08-06 13:23
回复 4# alihoney


    如果数据不定长,解决方法如下(控制文件内容):
  1. LOAD DATA
  2. INFILE 'aa.txt'
  3. INTO TABLE testsqlldra
  4. FIELDS TERMINATED BY ','
  5. (
  6. testsqlldrno ,
  7. testsqlldr
  8. )
  9. INTO TABLE testsqlldrb
  10. FIELDS TERMINATED BY ','
  11. TRAILING NULLCOLS
  12. (
  13. testsqlldrno  position(1),
  14. b_filler filler,
  15. testsqlldrname
  16. )
复制代码
注意第二个表的第一个字段后的position(1),就是指明从第一个字符位置开始。
参照了:http://ms.itpub.net/redirect.php ... amp;goto=nextnewset




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2