问题描述
嗨,
我希望将一个文件与其他字段的值一起插入到一个clob类型列中。我没有创建目录的权限, henc我不能使用bfile加载。我的表的结构类似于:
id :触发器通过序列填充的数字
文本:打(此处我想插入文件的内容)
状态: char ( 1字节)
日期:日期。
我尝试使用SQl Loader加载,但它没有帮助。因为我得到的值超过错误,即使我只插入字符“I”
如果我需要提供更多,请告诉我。
我确实提到了汤姆已经给出的答案,其中他编写了一个函数,来拿起文件,然后放在一个blob列中。但是我们需要创建一个目录,但是我没有足够的权限。
我希望将一个文件与其他字段的值一起插入到一个clob类型列中。我没有创建目录的权限, henc我不能使用bfile加载。我的表的结构类似于:
id :触发器通过序列填充的数字
文本:打(此处我想插入文件的内容)
状态: char ( 1字节)
日期:日期。
我尝试使用SQl Loader加载,但它没有帮助。因为我得到的值超过错误,即使我只插入字符“I”
如果我需要提供更多,请告诉我。
我确实提到了汤姆已经给出的答案,其中他编写了一个函数,来拿起文件,然后放在一个blob列中。但是我们需要创建一个目录,但是我没有足够的权限。
专家解答
如果您不使用SQL Loader ,则需要一个目录对象,例如,这里有一个代码片段-看看是如何进行的
根据您的字符集,您可能希望使用DBMS_LOB.DLOBFROMFILE而不是DBMS_LOB.DLOGFROMFILE
如果使用的是SQL Loader ,则可以使用完全限定名称从目录中选取文件,例如
SQL> declare 2 l_blob blob; 3 l_clob clob; 4 l_bfile bfile; 5 begin 6 insert into demo values ( 1, empty_blob(), empty_clob() ) 7 returning theBlob, theClob into l_blob, l_clob; 8 9 l_bfile := bfilename( 'MY_FILES', 'asktom.rtf' ); 10 dbms_lob.fileopen( l_bfile ); 11 dbms_lob.loadfromfile( l_blob, l_bfile, dbms_lob.getlength( l_bfile ) ); 12 dbms_lob.fileclose( l_bfile ); 13 14 l_bfile := bfilename( 'MY_FILES', 'asktom.txt' ); 15 dbms_lob.fileopen( l_bfile ); 16 dbms_lob.loadfromfile( l_clob, l_bfile, dbms_lob.getlength( l_bfile ) ); 17 dbms_lob.fileclose( l_bfile ); 18 end; 19 /
根据您的字符集,您可能希望使用DBMS_LOB.DLOBFROMFILE而不是DBMS_LOB.DLOGFROMFILE
如果使用的是SQL Loader ,则可以使用完全限定名称从目录中选取文件,例如
load data infile * replace into table test_lob fields terminated by ',' ( lob_id char(1), lob_file FILLER char, MY_LOB LOBFILE(lob_file) TERMINATED BY EOF ) begindata 1,c:\data\doc\acct1.txt 2,c:\data\doc\acct2.txt
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




