字符串文字太长 - 如何将长 xml 数据分配给 oracle 11g r2 中的 clob 数据类型

我需要将大约 30,000 行的非常大的 xml 数据分配给 oracle 数据库 11g r2 中的 CLOB 数据类型.我在 Oracle Sql Developer 中使用这个命令.

I need to assign a very large xml data of around 30,000 lines to a CLOB data type in oracle database 11g r2. I am using this command in Oracle Sql Developer.

当我使用以下命令时,首先我会收到 7 次 输入引用值 的提示,然后当语句执行完成时,我得到 - 'string literal too long` 错误.

When I use the following command, at first I get 7 prompts for entering quote value and then when statement execution completes, I get - 'string literal too long` error.

update tablename set columnName = 'large xml data' where id=1;

我在 xml 数据中使用了七个双(单引号)来转义单引号.

I used seven double (single quotes) inside the xml data to escape the single quotes.

如何将这些数据分配到 CLOB 列?

How to assign this data to the CLOB column?

推荐答案

一种方法是使用 sqlldr.首先,创建一个小的保存表:

One approach is to use sqlldr. First, create a small holding table:

create table tstclob
(
id number,
doc clob
);

假设你的大文档是文件c:data est_doc.txt",创建一个sqlldr控制文件(test_doc.ctl")来加载它:

Assuming your large document is the file "c:data est_doc.txt", create a sqlldr control file ("test_doc.ctl") to load it:

load data
infile *
replace 
into table tstclob
fields terminated by ','
(
 ID char(1),
 lob_file FILLER char,
  DOC LOBFILE(lob_file) TERMINATED BY EOF
 )
begindata
1,c:data	est_doc.txt

然后运行 ​​sqlldr(在本例中,从 c:data 目录):

Then run sqlldr (in this case, from c:data directory):

sqlldr control=test_doc.ctl userid=someuser@somedb/somepass

然后您可以使用 tstclob 表更新您想要的任何表.

You can then update whatever table you want using tstclob table.

相关文章