oracle遇到无效lob,使用SQL加载器将LOB导入Oracle失败

我正在尝试从SQL Server导出一个表,该表由一个ID和一个存储为nvarchar(max)的非常长的XML字符串组成。

SQL Table -- CREATE TABLE MyStuff (MyID int, MyText nvarchar(max))

Oracle Table -- CREATE TABLE MyStuffImported (MyID int, MyText NCLOB)

我正在使用SQL Server BCP实用工具导出到一个文本文件(mystuf.bcp),然后通过SQL加载程序导入到Oracle中。但SQL加载程序失败,并显示以下消息:

“数据文件(mystuf.bcp)中的物理记录长于最大值(1048576)”

0条记录被导入。

我不知道确切的问题是什么。最明显的可能性是mytext的长度超过了最大值1048576,实际上有些记录是,但不是全部,所以为什么至少有些记录没有被导入?有办法绕过这个限制吗?

另一种可能是我在一些讨论板上读到的,在我的文本中有一些Oracle无法处理的换行符。我希望我已经解决了这个问题:(1)从SQL中导出时删除\r和\n;(2)在SQL加载器控制文件的记录分隔符中使用\n(有关完整文件,请参见下面)。我是否做了不正确的事情,或者没有处理所有的案件?

这是我的SQL加载器控制文件的文本。请注意,我使用\作为分隔符,这看起来很奇怪,但它是mytext字段中唯一没有使用的字符。所以你会看到

\\

我的意思是\因为我在逃避它。

LOAD DATA

INFILE "MyStuff.bcp" "str '\\\n'"

APPEND INTO TABLE MyStuffImported

(

MyID INTEGER EXTERNAL TERMINATED BY "\\",

MyText CHAR TERMINATED BY "\\"

)

有什么建议吗?也许有更好的方法通过SQL加载器导入到NCLOB中?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值