免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3540 | 回复: 7
打印 上一主题 下一主题

oracle 11g 中能用sqlldr 同时装载一条记录到二个有约束的表中? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-02 11:46 |只看该作者 |倒序浏览
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

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 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. )
复制代码
这样就可以导入了。但是如果你的每行的值的长度不固定,就不能用这个。
目前长度不固定的我还没有找到方法。

论坛徽章:
3
CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43
3 [报告]
发表于 2010-08-02 13:14 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2010-08-03 10:07 |只看该作者
谢谢2楼的你!!!用position是可以做到定长的。因为数据文件每行的值的长度不固定,所以才发贴。。。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
5 [报告]
发表于 2010-08-03 14:23 |只看该作者
不定长的暂时没有好的解决办法。不定长的要实现当第一个表导完后,指针自动回到行首。如果这点能解决,那就比较简单了。

论坛徽章:
0
6 [报告]
发表于 2010-08-06 12:02 |只看该作者
能不能用when子句和terminated by $来使指针自动回到行首?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
7 [报告]
发表于 2010-08-06 12:07 |只看该作者
terminated by $就是按字段导入,字段自动后移啊。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
8 [报告]
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP