无法从CREATE DIRECTORY语句创建的目录中读取文件内容

时间:2013-06-04 10:37:07

标签: oracle

我正在使用Windows 7,我通过以下语句在Oracle中创建了一个目录:

CREATE DIRECTORY tmp AS 'D:/tmp';

我还创建了相应的文件夹D:/ tmp。在文件夹D:/ tmp中,我输入了一个xml文件'tmp.xml'。然后,在Oracle中,我运行此语句来读取xml文件的内容:

SELECT XMLTYPE(bfilename('tmp', 'tmp.xml'), nls_charset_id('UTF8')) xml_data
FROM dual;

我得到了结果:

XML_DATA


我看不到xml文件的内容。你可以帮帮我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

可能一直在思考这个问题...... bfile示例应该已经说明了发生了什么,但这假设你的原始问题有些错误而且你实际上看到了:

XML_DATA                                                                       
--------------------------------------------------------------------------------
(XMLTYPE) 

两个查询的括号中显示的类型表明您在SQL Developer中运行它; SQL * Plus是实际文本而不是类型。

如果是这种情况,要显示内容,您可以使用GETSTRINGVAL method

SELECT XMLTYPE(bfilename('TMP', 'tmp.xml'),
    nls_charset_id('UTF8')).getstringval() xml_data
FROM dual;

...或者如果XML超过4000个字符GETCLOBVAL method

如果要将值插入表(作为XMLTYPE列)或对其进行其他操作,则无需转换它,可以将其视为XMLType对象。这只是为了显示值。