我在google上搜索了“如何在oracle文件中存储xml文件” 但是,我还没有找到任何解决方案 我想存储一个xml文件(原始数据)。我不想要BFile 请告诉我存储xml和从Oracle数据库检索的方法。
谢谢。
答案 0 :(得分:0)
要存储XML文件,您可以使用BLOB类型的列。这只会为您存储数据。要使用PLSQL访问XML文件,请使用BFILE。然后,您可以将文件加载到BLOB列中。
以下是一些例子: http://dwarehouse.wordpress.com/2011/06/15/loading-and-unloading-files-using-oracle-database/
或者,您可以使用客户端编程语言提供的任何方法。
答案 1 :(得分:0)
您可以从外部XML文件中的任何标记中提取值并插入数据库但是您将面临一些问题,根据我对oracle的体验,请注意以下事项:
以下是过程更新表的示例,其中值从XML文件中退出:
CREATE OR REPLACE procedure Test(FileName in varchar,URN_Par in varchar)
is
begin
update Test
set File_Name =(
------------------this step get value of tag (file_name) and update test table , also you have to write any namespaces in as below
select
extract(column_value, '//File_Name/text()','xmlns="http://tempuri.org/')
from
table(xmlsequence(xmltype(bfilename('GIDTEMPFILES',FileName) ,
nls_charset_id('AL16UTF8')))))
, Class_Name =(
select
extract(column_value, '//Class_Name/text()','xmlns="http://tempuri.org/')
from
table(xmlsequence(xmltype(bfilename('GIDTEMPFILES',FileName) ,
nls_charset_id('AL16UTF8')))))
, Document_Date =(
select
extract(column_value, '//Document_Date/text()','xmlns="http://tempuri.org/')
from
table(xmlsequence(xmltype(bfilename('GIDTEMPFILES',FileName) ,
nls_charset_id('AL16UTF8')))))
, Image =(
-------------return the value stored in the image tag as clob to column image in DB which is clob
select
extract(column_value, '//Image/text()','xmlns="http://tempuri.org/').GetClobVal()
from
table(xmlsequence(xmltype(bfilename('GIDTEMPFILES',FileName) ,
nls_charset_id('AL16UTF8')))))
where URN = URN_par;
end;