



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用存储过程将数据以XML格式导出到XML文件文章分类:数据库 最近看到有网上有很多人问怎么把数据导出到XML文件,大多的解决方法就是 dbms_xmlgen+utl_file,首先要说的是,这种方法确实不错,但是有些缺点。如果系统中需要把数据导出XML文件,通常数据量都比较大,因此,对于大数据量的导出,UTL_FILE就显得比较苍白了。而且DBMS_XMLGEN获得数据本身就是有格式的,因此UTL_FILE的INSTR 就显得有些多余了。但是,我还要把这个方法记录下来,另外,还有一个是使用DBMS_XSLPROCESSOR包的方法。 一、准备工作 准备数据: CREATE TABLE xml_table(ID VARCHAR2(20), OBJECT_VALUE VARCHAR2(200); 导入数据: BEGIN FOR iIN 1 . 100000 LOOP INSERT INTOxml_tableVALUES (i,/zhangchu_63); END LOOP; COMMIT; END; / 通过上面的操作,我们已经建立了一张名叫xml_table的表,并向里面插入了100000条数据。大家知道XML文件是导出到OS的,因此,需要在ORACLE中为文件创建一个路径: CREATEORREPLACE DIRECTORY D_OUTPUTAS D:TEMP; 下面是我们就要开始。二、开始干活 1、dbms_xmlgen+utl_file方式 create or replace procedure xml_output is /*本存储过程使用dbms_xmlgen+utl_file两个包来完成数据导出到XML*/ xml_ctx dbms_xmlgen.ctxType; v_file utl_file.file_type; xml_txt varchar2(4000); line varchar2(500); begin xml_ctx := dbms_xmlgen.newContext(select * from xml_table order by id); dbms_xmlgen.setRowSetTag(xml_ctx,DBMS); dbms_xmlgen.setRowTag(xml_ctx,XML_TABLE);xml_txt := dbms_xmlgen.getXML(xml_ctx); v_file := utl_file.fopen(XML_OUTPUT,test.xml,w); loop line := substr(xml_txt,1,instr(xml_txt,chr(10)-1); utl_file.put_line(v_file,line); exit when instr(line,)0; xml_txt := substr(xml_txt,instr(xml_txt,chr(10)+1); end loop; dbms_xmlgen.closeContext(xml_ctx); utl_file.fclose(v_file); end xml_output ; 上面就是使用dbms_xmlgen+utl_file方式导出XML的,我的存储过程是没有参数的,如果大家需要可以自己加。 2、dbms_xmlgen+DBMS_XSLPROCESSOR方式 create or replace procedure xml_print is /* 本存储过程使用dbms_xmlgen+DBMS_XSLPROCESSOR两个包 来完成数据导出到XML */ xml_ctx dbms_xmlgen.ctxType; xml_txt clob; begin xml_ctx := dbms_xmlgen.newContext(select * from xml_table order by id); dbms_xmlgen.setRowSetTag(xml_ctx,DBMS); dbms_xmlgen.setRowTag(xml_ctx,XML_TABLE); xml_txt := to_clob(dbms_xmlgen.getXML(xml_ctx); DBMS_XSLPROCESSOR.clob2file (xml_txt,XML_OUTPUT,test.xml); dbms_xmlgen.closeContext(xml_ctx); end xml_print; 这个好处就是它不管xml_txt的格式,直接把所有数据写入test.xml中。 三、方法比较 dbms_xmlgen+utl_file方式:导出100000条数据,2分钟没导完,我没耐心等了。 dbms_xmlgen+DBMS_XSLPROCESSOR方式:导出100000条数据用了10秒钟。 四、总结 看了上面我写的过程和比较,不用我说,大家也都知道怎么选了吧。在这里我还是要说,没有最好的办法,只有最合适的办法,根据具体问题具体对待。 注:我上面的过程是为了简便,所以没有注释,没有EXCEPTION,希望大家别学我,要养成良好的书写习惯。 为了方便大家学习,我把dbms_xslprocessor中用到的过程描述贴出来,供大家参考:CLOB2FILE ProcedureThis procedure writes content of a CLOB into a file.SyntaxDBMS_XSLPROCESSOR.CLOB2FILE( cl IN CLOB; flocation IN VARCHAR2, fname IN VARCHAR2, csid IN NUMBER:=0);ParameterDescriptionCLOB File directoryflocation File directoryfname File namecsid Character set id of the
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年兔年春节慰问信范文(6篇)
- 儿童日常推拿培训课件
- 江苏省盐城市盐城一中、大丰中学2023-2024学年高二上学期10月联考物理含解析
- 广东省四会中学广信中学2023-2024学年高一上学期第二次月考化学含答案
- 赣南师范大学《导游基础知识应用》2023-2024学年第二学期期末试卷
- 太原科技大学《设计与应用》2023-2024学年第二学期期末试卷
- 石家庄医学高等专科学校《环境分析测试技术(现代仪器分析)》2023-2024学年第二学期期末试卷
- 天津国土资源和房屋职业学院《建筑材料与构造1》2023-2024学年第二学期期末试卷
- 渤海大学《工程力学(3)》2023-2024学年第二学期期末试卷
- 乌海职业技术学院《品牌系统识别设计》2023-2024学年第二学期期末试卷
- 人教版九年级数学上册一元二次方程《一元二次方程整 理与复习》示范公开课教学课件
- 2024年高考物理试题(广东卷) 含答案
- 2024秋期国家开放大学专科《液压与气压传动》一平台在线形考(形考任务+实验报告)试题答案
- 《预装式变电站》课件
- 推拿店合同范例
- 2024年高考真题-物理(贵州卷) 含解析
- 新能源技术投资风险评估与管理策略考核试卷
- 交通运输行业研发中心申报书
- 2023北京朝阳区初三一模英语试题及参考答案
- 2024年浙江省中考社会试卷真题(含标准答案及评分标准)
- 2025届高考作文复习:读写结合型作文审题立意
评论
0/150
提交评论