暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 将文件的内容插入到Clob类型列中

askTom 2017-01-10
96

问题描述

嗨,

我希望将一个文件与其他字段的值一起插入到一个clob类型列中。我没有创建目录的权限, henc我不能使用bfile加载。我的表的结构类似于:

id :触发器通过序列填充的数字
文本:打(此处我想插入文件的内容)
状态: char ( 1字节)
日期:日期。

我尝试使用SQl Loader加载,但它没有帮助。因为我得到的值超过错误,即使我只插入字符“I”

如果我需要提供更多,请告诉我。

我确实提到了汤姆已经给出的答案,其中他编写了一个函数,来拿起文件,然后放在一个blob列中。但是我们需要创建一个目录,但是我没有足够的权限。

专家解答

如果您不使用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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论