XML数据文件怎么导入到Oracle数据库中,xml文件的一个元数据如下:
  <?xml version="1.0" encoding="utf-8" standalone="no" ?> 
- <tablename>
- <tablename_row>
  
   <WISField003>广东省东莞市市直辖乡沙井子一场袁屋边沙井头坊三巷1号</WISField003> 
  <WISField005>广东省广州市白云区太和镇穗丰村</WISField005> 
  <WISField041>穗丰新排路一巷75号</WISField041>   </tablename_row>
  <tablename_row>
   ……
  </blename_row>
</tablename>

解决方案 »

  1.   

    可以用LOB对象。
    如果你要结构化的那就得相应建表了。。
      

  2.   

    有工具 可以把任何一种格式的文件 导入与导出。http://blog.csdn.net/qing0991/archive/2008/09/28/2993621.aspx --编程解决的http://www.soidc.net/articles/1215485053492/20090415/1215945584456_1.html
      

  3.   

    我记得以前mssql可以解决,Oracle也应该可以解决
      

  4.   

    以下适用于10G版本--如果是10G以前,用DBMS_XMLSAVE包代替XMLSTORE步骤一:创建XML文件存放的目录对象,并把xml文件放入此目录此例中为T_PRINTCLOBOUT.XMLSQL>createdirectoryXML_DIRas'/opt'
    /步骤二:创建存放数据的表SQL>createtableLQ_XML_TEST
    (
     USER_ID  NUMBER(10),
     USER_NAMEVARCHAR2(30)
    );步骤三:创建函数SQL>DECLARE QRYCTX DBMS_XMLGEN.CTXHANDLE; dst_loc CLOB; SAVCTXDBMS_XMLSTORE.CTXTYPE; N     NUMBER; src_loc   bfile := bfilename('XML_DIR', 'T_PRINTCLOBOUT.XML'); amt       number := dbms_lob.lobmaxsize; src_offset number := 1; dst_offset number := 1; lang_ctx  number := dbms_lob.default_lang_ctx; warning   number; v_exists  PLS_INTEGER := 0;BEGIN DBMS_LOB.CREATETEMPORARY(dst_loc, true);--该语句必写,原因不明,否则报错。 DBMS_OUTPUT.PUT_LINE('------------ LOB LOADCLOBFORMFILE EXAMPLE ------------');  dbms_lob.fileopen(src_loc, dbms_lob.file_readonly); v_exists := DBMS_LOB.fileexists(src_loc);---- 用于测试文件名以及路径是否正确 IF v_exists = 0 THEN   dbms_output.put_line('FILE NOT EXIST'); ELSE   dbms_output.put_line('FILE AND DIR VALID'); END IF;----将数据从OS文件加载到CLOB变量------- dbms_lob.LOADCLOBFROMFILE(dst_loc,                           src_loc,                           amt,                           dst_offset,                           src_offset,                           dbms_lob.default_csid,                           lang_ctx,                           warning); dbms_output.put_line(' Amount specified ' || amt); dbms_output.put_line(' Number of bytes read from source: ' ||                      (src_offset - 1)); dbms_output.put_line(' Number of characters written to destination: ' ||                      (dst_offset - 1)); if (warning = dbms_lob.warn_inconvertible_char) then   dbms_output.put_line('Warning: Inconvertible character'); end if; dbms_lob.filecloseall(); DBMS_OUTPUT.PUT_LINE(dst_loc); --开始设置加载数据的列 SAVCTX :=DBMS_XMLSTORE.NEWCONTEXT('LQ_XML_TEST'); DBMS_XMLSTORE.CLEARUPDATECOLUMNLIST(SAVCTX); DBMS_XMLSTORE.SETUPDATECOLUMN(SAVCTX, 'USER_ID');--要跟表的列名一致 DBMS_XMLSTORE.SETUPDATECOLUMN(SAVCTX, 'USER_NAME'); N :=DBMS_XMLSTORE.INSERTXML(SAVCTX, dst_loc); DBMS_XMLSTORE.CLOSECONTEXT(SAVCTX);END;/ 注意:xml文件的节点标签名要与表的字段名一致,否则解析不出来,插入表是空值
      

  5.   

    to 楼上:
    我的XML内容如下
    <?xml version="1.0"?> 
    <LQ_XML_TEST> 
        <USER_ID>1</USER_ID>
        <USER_NAME>asdf</USER_NAME>
    </LQ_XML_TEST>
    但是导入的时候总提示解析失败,不知道是怎么回事 
    SQL> exec sp1;
    ------------ LOB LOADCLOBFORMFILE EXAMPLE ------------
    test exist
    FILE AND DIR VALID
    Amount specified 18446744073709551615
    Number of bytes read from source: 111
    Number of characters written to destination: 111
    <?xml version="1.0"?> 
    <LQ_XML_TEST> 
        <USER_ID>1</USER_ID>
    <USER_NAME>asdf</USER_NAME>
    </LQ_XML_TEST> 
    BEGIN sp1; END;*
    ERROR at line 1:
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00222: error received from SAX callback function
    ORA-06512: at "SYS.DBMS_XMLSTORE", line 78
    ORA-06512: at "TEST.SP1", line 74
    ORA-06512: at line 1