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>
<?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>
解决方案 »
- 请问如何根据字段值中的逗号来拆分,并把拆分的数据保存到新表中?
- 数据库中的一些中文被显示成?, 大部分没有问题。数据库的字符集是 ZHS16CGB231280,请帮忙指导。谢谢
- 求一SQL语句.........................................标题要长
- oracle10数据库在windowsXP下安装,如何配置数据库
- 在form 6i中引用ocx问题 window media play
- 安装oracle到最后出现错误,高手给看看
- 各位:oracle中如何定义一个自增长型的数据?
- plsql developer连oracle数据库的问题
- 请求帮助(SQL语句方面,详细见内),谢谢!
- oracle 11g r2 oracle developer连接总是报错ora-12519
- 新建用户,赋只读权限
- plsql developer 连接不了数据库。数据库重启后又可以正常连接
如果你要结构化的那就得相应建表了。。
/步骤二:创建存放数据的表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文件的节点标签名要与表的字段名一致,否则解析不出来,插入表是空值
我的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