如何将oml数据库中的xml文件存储为原始数据

时间:2013-12-11 10:04:15

标签: xml database oracle oracle11g

我在google上搜索了“如何在oracle文件中存储xml文件” 但是,我还没有找到任何解决方案 我想存储一个xml文件(原始数据)。我不想要BFile 请告诉我存储xml和从Oracle数据库检索的方法。

谢谢。

2 个答案:

答案 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中选择属性值

您可以从外部XML文件中的任何标记中提取值并插入数据库但是您将面临一些问题,根据我对oracle的体验,请注意以下事项:

  • oracle配置文件包含一些默认命名空间,因此如果您的xml文件中有任何命名空间,否则这些命名空间,您必须将其添加到您构建的过程或函数中
  • 如果从XML(BLOB或CLOB文件)中选择,请不要忘记将结果转换为以xml格式化的BLOB或CLOB。

以下是过程更新表的示例,其中值从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;