求救:Oracle导数如何控制换行符(UNIX)下控制导入 sqlldr

jjcrazy 2010-01-20 10:30:22
小弟我现在遇见一难题:
数据文件: kk.dat
123|abcd|
234|aaa
bbb|
345|cccc|

控制文件 kk.ctl:
LOAD DATA INFILE 'kk.dat' APPEND INTO TABLE kk FIELDS TERMINATED BY "|"
(
NAME1 CHAR(60) ,
NAME2 CHAR(40) "replace(:NAME2, '\\r\\n', char(10))"
)

希望导入到数据库是
name1 name2
123 abcd
234 aaaaa
bbbb
345 ccccc

急急急 谢谢
...全文
470 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jjcrazy 2010-01-20
  • 打赏
  • 举报
回复
不行的, 第二条记录那个换行一定要加进去!!
wuyisky84 2010-01-20
  • 打赏
  • 举报
回复
能不能对数据文件进行处理呢?

很容易处理成:
123,abcd
234,aaa
bbb,
345,cccc
这样的格式的
crazylaa 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jjcrazy 的回复:]
对于换行符方式已经解决;
可以将导出的时候将换行符号替换成特殊符号

execute procedure ifx_allow_newline('t');

unload to kk.txt
select
name1,
replace (name2, '
', 'kkkk')
from kk;

====
导入的时候设置Oracle 的控制文件 kk.ctl
LOAD DATA INFILE 'kk.txt' APPEND INTO TABLE kk FIELDS TERMINATED BY "|"
(
NAME1    CHAR(40),
NAME    CHAR(20) "replace (:name, 'kkkk', '
')"
)

执行导入命令:
sqlldr bsrv/bsrv control=kk.ctl bindsize=8192000 readsize=8192000 log=/home/bsrv/log/logdir/log_kk.log bad=/home/bsrv/log/baddir/bad_kk.bad errors=99999999 rows=100000
[/Quote]
多谢分享。
jjcrazy 2010-01-20
  • 打赏
  • 举报
回复
对于换行符方式已经解决;
可以将导出的时候将换行符号替换成特殊符号

execute procedure ifx_allow_newline('t');

unload to kk.txt
select
name1,
replace (name2, '
', 'kkkk')
from kk;

====
导入的时候设置Oracle 的控制文件 kk.ctl
LOAD DATA INFILE 'kk.txt' APPEND INTO TABLE kk FIELDS TERMINATED BY "|"
(
NAME1 CHAR(40),
NAME CHAR(20) "replace (:name, 'kkkk', '
')"
)

执行导入命令:
sqlldr bsrv/bsrv control=kk.ctl bindsize=8192000 readsize=8192000 log=/home/bsrv/log/logdir/log_kk.log bad=/home/bsrv/log/baddir/bad_kk.bad errors=99999999 rows=100000
jjcrazy 2010-01-20
  • 打赏
  • 举报
回复
谢谢todayandtomorrow 朋友 我的数据格式中 aaa 与 bbb 是当做name2 值进行导入的~~
因此你看到的 "aaa
bbb| "
这个就是一个值, 只是aaa后面有换行符号;
todayandtomorrow 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jjcrazy 的回复:]
第二行数据是没有问题的!  从Informix数据库导出的时候他的时候是有格式的, 导入的时候也是要有这样的格式
如bbb内容是  "*&aaa&*文件

  亲爱的朋友,能帮忙解决一下问题吗??
                          日期:&@@@@@@@@&" 这样格式的文本内容.
[/Quote]

如你所见数据是以'|'来进行分割的。如果不能改,'bbbb'只能当成第二列name2的值。。。

还有我说得是第三行,不是第二行。。。
jjcrazy 2010-01-20
  • 打赏
  • 举报
回复
第二行数据是没有问题的! 从Informix数据库导出的时候他的时候是有格式的, 导入的时候也是要有这样的格式
如bbb内容是 "*&aaa&*文件

亲爱的朋友,能帮忙解决一下问题吗??
日期:&@@@@@@@@&" 这样格式的文本内容.
todayandtomorrow 2010-01-20
  • 打赏
  • 举报
回复
第三行得数据是不是有问题啊?
123|abcd|
234|aaa
|bbb
345|cccc|
这样才有可能导入到数据库是
name1 name2
123 abcd
234 aaaaa
bbbb
345 ccccc


能修改下吗?
相关推荐
发帖
Oracle 高级技术

3472

社区成员

Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
帖子事件
创建了帖子
2010-01-20 10:30
社区公告
暂无公告