免费注册 查看新帖 |

Chinaunix

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

sqlldr 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-10 20:03 |只看该作者 |倒序浏览
表的前三个字段导入时设值常量,后面的字段导入文本文件里面的数据,文本文件的值是以tab分隔的,

  1. SQL> desc t
  2. Name Type       Nullable Default Comments
  3. ---- ---------- -------- ------- --------
  4. A1   NUMBER(8)  Y                        
  5. A2   NUMBER(8)  Y                        
  6. A3   NUMBER(10) Y                        
  7. B1   NUMBER(10) Y                        
  8. B2   CHAR(10)   Y                  
复制代码
文本文件:

  1. 123        qwe
  2. 12345        asdf
  3. 678        asdf
复制代码
ctl文件:

  1. LOAD DATA  INFILE 'd:\Work\Tmp\sqlldr\dat\T.txt'  
  2. APPEND INTO TABLE EB_COLLECT.T  FIELDS TERMINATED BY X'09'  TRAILING NULLCOLS  
  3. (  A1 "TO_CHAR(SYSDATE,'YYYYMMDD')",
  4.    A2 RECNUM,
  5.    A3    constant 1001,
  6.    B1,
  7.    B2)

复制代码
其中文本文件的第一列123,12345,678想导入到B1,后面的导入到B2,前面的A1,A2,A3设常量,现在的写法导入的时候报错,请各位指出需要修改的地方,谢谢

论坛徽章:
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-07-10 20:12 |只看该作者
报什么错误。

论坛徽章:
0
3 [报告]
发表于 2010-07-10 20:19 |只看该作者
回复 2# renxiao2003


log文件


  1. SQL*Loader: Release 10.2.0.1.0 - Production on 星期六 7月 10 19:45:58 2010

  2. Copyright (c) 1982, 2005, Oracle.  All rights reserved.

  3. 控制文件:      d:\Work\Tmp\sqlldr\ctl\t.ctl
  4. 数据文件:      d:\Work\Tmp\sqlldr\dat\T.txt
  5.   错误文件:    d:\Work\Tmp\sqlldr\ctl\T.bad
  6.   废弃文件:    未作指定

  7. (可废弃所有记录)

  8. 要加载的数: ALL
  9. 要跳过的数: 0
  10. 允许的错误: 50
  11. 继续:    未作指定
  12. 所用路径:       直接

  13. 表 EB_COLLECT.T,已加载从每个逻辑记录
  14. 插入选项对此表 APPEND 生效
  15. TRAILING NULLCOLS 选项生效

  16.    列名                        位置      长度  中止 包装数据类型
  17. ------------------------------ ---------- ----- ---- ---- ---------------------
  18. A1                                  FIRST     *  WHT      CHARACTER            
  19.     列的 SQL 串: "TO_CHAR(SYSDATE,'YYYYMMDD')"
  20. A2                                                        RECNUM
  21. A3                                                        CONSTANT
  22.     Value is '1001'
  23. B1                                   NEXT     *  WHT      CHARACTER            
  24. B2                                   NEXT     *  WHT      CHARACTER            

  25. 记录 1: 被拒绝 - 表 EB_COLLECT.T 的列 B1 出现错误。
  26. ORA-01722: 无效数字

  27. 记录 2: 被拒绝 - 表 EB_COLLECT.T 的列 B1 出现错误。
  28. ORA-01722: 无效数字

  29. 记录 3: 被拒绝 - 表 EB_COLLECT.T 的列 B1 出现错误。
  30. ORA-01722: 无效数字


  31. 表 EB_COLLECT.T:
  32.   0 行 加载成功。
  33.   由于数据错误, 3 行 没有加载。
  34.   由于所有 WHEN 子句失败, 0 行 没有加载。
  35.   由于所有字段都为空的, 0 行 没有加载。

  36. 在直接路径中没有使用绑定数组大小。
  37. 列数组  行数:    3000
  38. 流缓冲区字节数:  256000
  39. 读取   缓冲区字节数: 5000000

  40. 跳过的逻辑记录总数:          0
  41. 读取的逻辑记录总数:             3
  42. 拒绝的逻辑记录总数:          3
  43. 废弃的逻辑记录总数:        0
  44. 由 SQL*Loader 主线程加载的流缓冲区总数:        2
  45. 由 SQL*Loader 加载线程加载的流缓冲区总数:        0

  46. 从 星期六 7月  10 19:45:58 2010 开始运行
  47. 在 星期六 7月  10 19:45:59 2010 处运行结束

  48. 经过时间为: 00: 00: 00.11
  49. CPU 时间为: 00: 00: 00.06

复制代码

论坛徽章:
0
4 [报告]
发表于 2010-07-10 20:23 |只看该作者
默认的值只能写在最后,前三个设默认值的字段放在后面就可以了

论坛徽章:
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-07-10 20:49 |只看该作者
回复 1# Gdla

控制文件如下:
  1. LOAD DATA INFILE 't.txt'
  2. APPEND INTO TABLE T FIELDS TERMINATED BY X'09' TRAILING NULLCOLS
  3. (B1,
  4. B2,
  5. A1 "TO_CHAR(SYSDATE,'YYYYMMDD')",
  6. A2 RECNUM,
  7. A3 constant 1001)
复制代码
从数据导入字段写在前面,默认(不是从文件导入)的字段要卸载后面。这样就OK了。

论坛徽章:
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
6 [报告]
发表于 2010-07-10 20:50 |只看该作者
本帖最后由 renxiao2003 于 2010-07-10 20:53 编辑

回复 1# Gdla
  1. SQL*Loader: Release 10.2.0.1.0 - Production on Sat Jul 10 20:46:42 2010

  2. Copyright (c) 1982, 2005, Oracle.  All rights reserved.

  3. Control File:   c.ctl
  4. Data File:      t.txt
  5.   Bad File:     t.bad
  6.   Discard File:  none specified

  7. (Allow all discards)

  8. Number to load: ALL
  9. Number to skip: 0
  10. Errors allowed: 50
  11. Bind array:     64 rows, maximum of 256000 bytes
  12. Continuation:    none specified
  13. Path used:      Conventional

  14. Table T, loaded from every logical record.
  15. Insert option in effect for this table: APPEND
  16. TRAILING NULLCOLS option in effect

  17.    Column Name                  Position   Len  Term Encl Datatype
  18. ------------------------------ ---------- ----- ---- ---- ---------------------
  19. B1                                  FIRST     *  WHT      CHARACTER
  20. B2                                   NEXT     *  WHT      CHARACTER
  21. A1                                   NEXT     *  WHT      CHARACTER
  22.     SQL string for column : "TO_CHAR(SYSDATE,'YYYYMMDD')"
  23. A2                                                        RECNUM
  24. A3                                                        CONSTANT
  25.     Value is '1001'


  26. Table T:
  27.   3 Rows successfully loaded.
  28.   0 Rows not loaded due to data errors.
  29.   0 Rows not loaded because all WHEN clauses were failed.
  30.   0 Rows not loaded because all fields were null.


  31. Space allocated for bind array:                  51328 bytes(64 rows)
  32. Read   buffer bytes: 1048576

  33. Total logical records skipped:          0
  34. Total logical records read:             3
  35. Total logical records rejected:         0
  36. Total logical records discarded:        0

  37. Run began on Sat Jul 10 20:46:42 2010
  38. Run ended on Sat Jul 10 20:46:47 2010

  39. Elapsed time was:     00:00:04.83
  40. CPU time was:         00:00:00.10
复制代码
上面是日志文件。
  3 Rows successfully loaded.
三行数据都导入了。

论坛徽章:
0
7 [报告]
发表于 2010-07-10 22:43 |只看该作者
谢谢你的回帖

论坛徽章:
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-07-11 16:23 |只看该作者
回帖是美德,关键还要帮助把问题解决了啊。

论坛徽章:
3
CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43
9 [报告]
发表于 2010-07-12 08:40 |只看该作者
恩  默认值列应该写在最后的!

论坛徽章:
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
10 [报告]
发表于 2010-07-12 08:47 |只看该作者
恩  默认值列应该写在最后的!
duolanshizhe 发表于 2010-07-12 08:40



    但是一般来说不细看,可能不会注意这些细节(特别是刚开始使用的人)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP