以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML 与 数据库 』  (http://bbs.xml.org.cn/list.asp?boardid=17)
----  如何将数据库中的数据导出成XML文件?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=17&rootid=&id=156)


--  作者:peter_peng
--  发布时间:11/13/2003 3:10:00 PM

--  如何将数据库中的数据导出成XML文件?
如何将数据库中的数据导出成XML文件?
--  作者:charlieast
--  发布时间:11/15/2003 2:14:00 PM

--  
看IBM中国站的翻译文章:
http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/xml-onlinecourse-bytitle/06D6C3292D6F42DF48256B2900138F84?OpenDocument
--  作者:caca
--  发布时间:11/19/2003 8:29:00 PM

--  这里有!
http://www2.zzu.edu.cn/ie/dvbbs/

关于用asp程序转换xml数据的可行性方案[原创]
******************************************************
*  关于用asp程序转换xml数据的可行性方案
*                 作者:caca(卡卡)
* qq:154222225 mail:root@3ney.com
*    2003.11.2  @ zzu http://2bbs.vicp.net
*******************************************************
1.总体思想:
   在xml火热与各种ml的网络时代,xml的数据存储与提取显得非常重要
   可是,以往的各种格式的数据库,例如:ms的access,sql server;以及重
   要的my sql,orcale,db2...........,利用asp的ado接口可以提取各种数据
   所以,也可以把这些数据转换成为xml文档数据.于是乎,冒出了这个想法.
2,进一步具体化:
  例如:microsoft access:data.mdb
  有数据表:user
  数据如下:
  name  age  qq
  caca   19     154222225
  xiaom  18    153324677
  .........  ....    ..........
  那么生成的xml文档格式应该为:
  <?xml version="1.0" encoding="gb2312"?>
  <data>
       <user>
            <name>caca</name>
            <age>19</age>
            <qq>154222225</qq>
       </user>
       <user>
           <name>xiaom</name>
           <age>18</age>
            <qq>153324677</qq>
        </user>
   </data>
   *************************************
   有了这个思想,作asp就简单了
            这里不写code了
   *************************************
   changdatatoxml.asp
  
   1,用fso建立data.xml
   2,先写入data.xml的代码当然是:<?xml version="1.0" encoding="gb2312"?>
                                                     <data>
   3,连接access数据data.mdb
     循环得到各个数据表的名称
     用fso写入data.xml
   ********************************************
3 好了,源代码以后会公布的,呵呵,小意思的了
   我闪了.........................


--  作者:xml3000
--  发布时间:11/25/2003 2:21:00 PM

--  
那如何将xml文件的数据导入数据库呢?如aa.xml 导入到mssqlserver中.我实现了,但是在记录较多时速度较慢,(如超过10000条时)。
欢迎讨论:azhong18@163.net
  15196670
--  作者:盐水
--  发布时间:12/3/2003 10:03:00 AM

--  
关注中……
--  作者:szhzz
--  发布时间:12/4/2003 4:11:00 PM

--  
你可以使用 DataAnyWhere, 它可以结构化地导出数据库,还可以更新修改数据
可访问www.szhzz.com
--  作者:simon
--  发布时间:12/9/2003 9:45:00 PM

--  
需要用到schema来作类型转换
--  作者:ffff
--  发布时间:2/7/2004 4:04:00 AM

--  太谢谢了,好地方!
以下是引用charlieast在2003-11-15 14:14:48的发言:
看IBM中国站的翻译文章:
http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/xml-onlinecourse-bytitle/06D6C3292D6F42DF48256B2900138F84?OpenDocument



--  作者:hutoo
--  发布时间:2/7/2004 6:50:00 PM

--  
好地方
--  作者:木鱼
--  发布时间:3/3/2004 12:44:00 PM

--  
习惯自己搞定,用java和dom遍历数据库,生成xml文本....................
--  作者:jackeyzeng
--  发布时间:4/26/2004 12:13:00 AM

--  方法上有什么不同? 后者没用dom或者sax
请问你提到的“习惯自己搞定,用java和dom遍历数据库,生成xml文本....................” 与用java 的import java.sql.*的system.out.printlin("xml标记“)方法上有什么不同? 后者没用dom或者sax
--  作者:imdeep105
--  发布时间:5/15/2004 12:16:00 PM

--  
这个在网上可以查到。有人知道怎样实现从XML中搜索然后把搜索到的导出到数据库吗?
--  作者:kxxxx001
--  发布时间:5/26/2004 12:14:00 PM

--  
我试了ibm上面的那个教程,可是创建文档的时候老出错。
哪位大哥给个例子看看?就是jdbc结果集生成xml文档的,谢谢!
--  作者:小虾米
--  发布时间:5/26/2004 10:19:00 PM

--  
我也试过了  没通过  研究ing
--  作者:kxxxx001
--  发布时间:5/26/2004 11:20:00 PM

--  
郁闷啊,我都是了n次了。
主要是那些包和用法都不熟悉,如果有一个完整小例子就好了
--  作者:yuewei
--  发布时间:6/7/2004 4:53:00 PM

--  
我想问一下
用ASP怎么将关系数据库转换为XMl文档
谢谢!
--  作者:redez
--  发布时间:6/11/2004 4:43:00 PM

--  
xdr或xsd架构
--  作者:渤海
--  发布时间:8/11/2004 9:26:00 AM

--  
XML与DBMS的双向转换中应注意什么问题?多指教
--  作者:渤海
--  发布时间:8/17/2004 9:36:00 PM

--  
我们可以把问题搞得更深入些。以上各位楼兄的转换方法以,好象只今儿停留在数据的转换上。也就是说,从一张表到一个XML文档,再从一个XML文档到一张表都是相对简单的数据转换。把一个数据库导出为XML文档集,再把XML文档集导入为一个数据库,这就相对困难了。然而这只是静态转换问题。更困难的是如何解决数据的动态转换问题以及与用户如何沟通。这就要从不同的层次上考虑转换的问题:数据转换、模式轮换、查询转换和模型转换。
--  作者:dm
--  发布时间:8/18/2004 11:08:00 AM

--  
3楼的大哥把原代码公布给初学者啊!!
--  作者:woshihuiyuan
--  发布时间:8/26/2004 11:01:00 AM

--  
我也是刚刚学习xml的
我实现了将数据库的查询结果保存为xml,写的不规范,不好意思拿出来,希望和大家共同学习
现在测试将xml文件导入到数据库时,导入三条数据可以,数据量多的时候就报错
java.lang.IndexOutOfBoundsException: Index: 9 Size: 9
不知道有那位朋友能帮帮我说明一下为什么
我用的是Jdom来操作xml的。谢谢了!

tongxin_botao@hotmail.com


--  作者:cgp1996
--  发布时间:9/17/2004 12:56:00 PM

--  
用vc可以吗?
--  作者:hf200012
--  发布时间:11/5/2004 4:38:00 PM

--  
很好做啊,我用java做了一个东西,就是将数据库导成xml文件,在将xml文件导到数据库中
--  作者:wenmier
--  发布时间:12/24/2004 9:30:00 AM

--  
IBM上的教程我现在访问说不存在了呀,谁有?能不能给我一份,非常感谢!
我的EMAIL:superwm_9@hotmail.com
--  作者:s02r307
--  发布时间:12/28/2004 1:08:00 AM

--  
为什么发不上,辛苦写了半天,结果出错。
--  作者:s02r307
--  发布时间:12/28/2004 1:19:00 AM

--  
写了一个程序,两个功能
1,用jdbc从db中读出数据,再用dom写入到xml文档
2,用dom遍历转换所得的xml文档,写入到数据库中

在access下,测试成功。

存在问题;
本来设计目标是对任意数据库转换为xml,但在转换sql server为xml文档时总出错。
不知什么原因,请教高手指点。

xml结构:
<database database_name="" dbms_name="">
  <table tabla_name="">
     <recorder ...

以下是db2xml的源程序;先谢了!

package dbxml;


import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.DocumentType;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.eclipse.swt.widgets.List;
import java.io.FileOutputStream;
import java.sql.*;

public class Db2XML {

 Connection connect; //connect to the database
 Statement sql;
 String[] att,ele;
 int attnum,elenum;

 ResultSet rsc;
 ResultSetMetaData rsmd;
 String attdata,databasename;
 DatabaseMetaData dbmd;
 
 public Db2XML(String dbname,Connection connection) {
  databasename=dbname;
  connect=connection;

 }
 //*******TABLE Tag********
  
 public boolean TableExist(String tname){
  for (int m=0;m<attnum;m++){    
   int index=att[m].indexOf(".");
   if(att[m].substring(0,index).equals(tname))
   {
    return true;   
   }
  }
  for (int n=0;n<elenum;n++){
   int index=ele[n].indexOf(".");
   if(ele[n].substring(0,index).equals(tname))
            {
    return true;
   }
  }
  return false;
 }

 public void WriteTable(String f,List selectatt,List selectele) throws Exception
 {
  att=selectatt.getItems();
  ele=selectele.getItems();
        attnum=selectatt.getItemCount();
        elenum=selectele.getItemCount();
        
        dbmd = connect.getMetaData();
        String SYSTEM_ID = "db.dtd";
        
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = factory.newDocumentBuilder();
  DOMImplementation domImpl = builder.getDOMImplementation();

  ////////////////////////////////////////////
  DocumentType docType = domImpl.createDocumentType("DATABASE",
                null,
                SYSTEM_ID);
  Document dtddocument = domImpl.createDocument("", "DATABASE", docType);

  
  //root
  Document document = domImpl.createDocument("", "DATABASE", null);
  Element root = document.getDocumentElement();
  
  //root
  Attr rootattr1=document.createAttribute("DATABASE_NAME");
  rootattr1.setValue(databasename);
  root.setAttributeNode(rootattr1);
  
  //root DBMS
  Attr rootattr2=document.createAttribute("DBMS_NAME");
  rootattr2.setValue(dbmd.getDatabaseProductName());
  root.setAttributeNode(rootattr2);
  
  try {
   ResultSet rst;
   //DatabaseMetaData dbmd;
   //dbmd = connect.getMetaData();
   String[] type = { "table" };
   String tablename;
   rst = dbmd.getTables(null, null, null, type);

   
   while (rst.next()) {
    tablename = rst.getString("TABLE_NAME");
    if(TableExist(tablename)){
                    //table tag
     Element child1 = document.createElement("TABLE");

     //table tag table
     Attr attr=document.createAttribute("TABLE_NAME");
     attr.setValue(tablename);
     child1.setAttributeNode(attr);
     WriteColumn(document,child1,tablename);
                
     root.appendChild(child1);
     int i=0;
     i++;
     System.out.print(i);
    }
   }
   rst.close();
   
  } catch (Exception e) {
   System.out.println(e.getMessage()+"rst");
  }
  //the foot of tablename    
  //attnum=0;
  TransformerFactory transFactory = TransformerFactory.newInstance();
  Transformer transformer = transFactory.newTransformer();
  transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, SYSTEM_ID);
        //transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, PUBLIC_ID);


  DOMSource source = new DOMSource(document);
  FileOutputStream os = new FileOutputStream(f);
  StreamResult result = new StreamResult(os);
  transformer.transform(source, result);
 }
 public void WriteColumn(Document document,Element child1,String tablename)
 {
  try {
   ResultSet rsc;
   //ResultSetMetaData rsmd;
   sql = connect.createStatement();
   rsc = sql.executeQuery("SELECT * FROM " + tablename);
            
   ResultSet rscinfo;
   rscinfo=dbmd.getColumns(null,null,tablename,"%");

   //****************************************************
   //******TABLE TAG DataType******************
   //****************************************************
   
   //DataType tag
   Element child1_0 = document.createElement("DataType");
   
   //DataType TAG
   while(rscinfo.next()){
    //DataType
    Element child1_0_1 =document.createElement(rscinfo.getString("COLUMN_NAME"));
    
    //DATA_TYPE
    Attr attr1=document.createAttribute("DATA_TYPE");
    attr1.setValue(rscinfo.getString("DATA_TYPE"));
    child1_0_1.setAttributeNode(attr1);
    
                //DATA_TYPE
    Attr attr2=document.createAttribute("TYPE_NAME");
    attr2.setValue(rscinfo.getString("TYPE_NAME"));
    child1_0_1.setAttributeNode(attr2);
    
                //DATA_TYPE
    Attr attr3=document.createAttribute("COLUMN_SIZE");
    attr3.setValue(rscinfo.getString("COLUMN_SIZE"));
    child1_0_1.setAttributeNode(attr3);
    
                //DATA_TYPE
    Attr attr4=document.createAttribute("NULLABLE");
    attr4.setValue(rscinfo.getString("NULLABLE"));
    child1_0_1.setAttributeNode(attr4);
    
                //DATA_TYPE
    //Attr attr5=document.createAttribute("REMARKS");
    //attr5.setValue(rscinfo.getString(2));
    //child1_0_1.setAttributeNode(attr5);
    
    //child1_0_1.appendChild(document.createTextNode(rscinfo.getString(6)+"("+rscinfo.getString("COLUMN_SIZE")+")"));
    child1_0.appendChild(child1_0_1);
   }
   //rscinfo.deleteRow();
  
   rscinfo.close();
   child1.appendChild(child1_0);
   
   //*****************************************************
   //******TABLE TAGNI RECORDER******************
   //*****************************************************
   while (rsc.next()) {
   
   //RECORDER tag
   Element child1_1 = document.createElement("RECORDER");
   
   //*******Recorder************
   for (int m=0;m<attnum;m++){
    int index=att[m].indexOf(".");
    if(att[m].substring(0,index).equals(tablename))
    {
     Attr attr=document.createAttribute(att[m].substring(att[m].indexOf(".")+1));
                    attdata=rsc.getString(att[m].substring(att[m].indexOf(".")+1));
     attr.setValue(attdata);
     child1_1.setAttributeNode(attr);    
    }
   }
   
            //*******Recorder************
   for (int n=0;n<elenum;n++){
    int index=ele[n].indexOf(".");
    if(ele[n].substring(0,index).equals(tablename))
                {
     Element child1_1_1 =document.createElement(ele[n].substring(ele[n].indexOf(".")+1));
         
     //Text data=document.createTextNode(rsc.getString(ele[n].substring(ele[n].indexOf(".")+1)));
        //child1_1_1.setData(rsc.getString(ele[n].substring(ele[n].indexOf(".")+1)));
     child1_1_1.appendChild(document.createTextNode(rsc.getString(ele[n].substring(ele[n].indexOf(".")+1))));
     
     child1_1.appendChild(child1_1_1);                    
    }

   }                        
   child1.appendChild(child1_1);   

      }//the end of while (rsc.next())
   //rsc.deleteRow();
   rsc.close();
   
  }//the end of try
   catch (Exception e) {
   System.out.println(e.getMessage()+"ggg");
  }
 } //the end of public void writecolumn
}


--  作者:why_walk
--  发布时间:1/12/2005 8:37:00 AM

--  ADO的Recordset就可以啊
Save 方法 (ADO Recordset)
      

将 Recordset 保存(持久)在文件中。

语法

recordset.Save FileName, PersistFormat

参数

FileName   可选。文件的完整路径名,用于保存 Recordset。

PersistFormat   可选。PersistFormatEnum 值,指定保存 Recordset 所使用的格式。可以是如下的某个常量:

常量 说明
adPersistADTG (默认)使用专用的“Advanced Data Tablegram”格式保存。
adPersistXML 使用 XML 格式保存。


--  作者:ssp314
--  发布时间:5/5/2005 8:09:00 AM

--  
jian yi yong yi xia JDOM
--  作者:bolang9398
--  发布时间:5/6/2005 9:45:00 PM

--  
好好学习啊!
--  作者:d_hao20@ustc.edu
--  发布时间:5/8/2005 1:31:00 PM

--  
xml操作数据库很慢吗?
--  作者:d_hao20@ustc.edu
--  发布时间:5/8/2005 1:36:00 PM

--  
我用的是VC#.NET做的,成功了,但是不好看,没什么新意,就不献丑了
--  作者:shengel
--  发布时间:5/9/2005 3:27:00 PM

--  
我从access,用save方法可以生成文件,但是生气是乱码
--  作者:d_hao20@ustc.edu
--  发布时间:5/10/2005 12:01:00 PM

--  
有谁知道在Xquery中的$是什么意思


--  作者:d_hao20@ustc.edu
--  发布时间:5/11/2005 11:57:00 AM

--  
以下是引用caca在2003-11-19 20:29:28的发言:
http://www2.zzu.edu.cn/ie/dvbbs/

关于用asp程序转换xml数据的可行性方案[原创]
******************************************************
*  关于用asp程序转换xml数据的可行性方案
*                 作者:caca(卡卡)
* qq:154222225 mail:root@3ney.com
*    2003.11.2  @ zzu http://2bbs.vicp.net
*******************************************************
1.总体思想:
    在xml火热与各种ml的网络时代,xml的数据存储与提取显得非常重要
    可是,以往的各种格式的数据库,例如:ms的access,sql server;以及重
    要的my sql,orcale,db2...........,利用asp的ado接口可以提取各种数据
    所以,也可以把这些数据转换成为xml文档数据.于是乎,冒出了这个想法.
2,进一步具体化:
   例如:microsoft access:data.mdb
   有数据表:user
   数据如下:
   name  age  qq
   caca   19     154222225
   xiaom  18    153324677
   .........  ....    ..........
   那么生成的xml文档格式应该为:
   <?xml version="1.0" encoding="gb2312"?>
   <data>
        <user>
             <name>caca</name>
             <age>19</age>
             <qq>154222225</qq>
        </user>
        <user>
            <name>xiaom</name>
            <age>18</age>
             <qq>153324677</qq>
         </user>
    </data>
    *************************************
    有了这个思想,作asp就简单了
             这里不写code了
    *************************************
    changdatatoxml.asp
   
    1,用fso建立data.xml
    2,先写入data.xml的代码当然是:<?xml version="1.0" encoding="gb2312"?>
                                                      <data>
    3,连接access数据data.mdb
      循环得到各个数据表的名称
      用fso写入data.xml
    ********************************************
3 好了,源代码以后会公布的,呵呵,小意思的了
    我闪了.........................


厉害


--  作者:boatstar
--  发布时间:5/12/2005 5:05:00 PM

--  
请大下上载一个实例啊
--  作者:boatstar
--  发布时间:5/12/2005 5:06:00 PM

--  
没看懂
--  作者:liangfeng
--  发布时间:5/16/2005 12:46:00 PM

--  
DataAnyWhere这个已经不能下载了
谁能给我发一个啊 先谢谢了 liangfeng136139@sohu.com
--  作者:d_hao20@ustc.edu
--  发布时间:5/17/2005 5:21:00 PM

--  
大家不来看帖呢
--  作者:switer520
--  发布时间:5/18/2005 2:10:00 AM

--  
关于基于XML技术实现数据体间数据交换,谁能给点高见,这是我的毕设题目??
--  作者:canxing
--  发布时间:5/18/2005 8:28:00 PM

--  
大家都期待有好东西啊
--  作者:d_hao20@ustc.edu
--  发布时间:5/24/2005 4:21:00 PM

--  

--  作者:canxing
--  发布时间:5/25/2005 9:50:00 AM

--  
26 楼的高手,你是用Java实现的吗?我都看不懂……555555

--  作者:宇南
--  发布时间:5/28/2005 5:20:00 PM

--  
贼想知道源代码
--  作者:switer520
--  发布时间:5/29/2005 4:47:00 AM

--  
我也特想知道啊 !!!
--  作者:邪之正義
--  发布时间:5/30/2005 8:42:00 AM

--  
kankan
--  作者:switer520
--  发布时间:6/1/2005 4:51:00 PM

--  
原码传上来研究一下,谢谢
新学者
--  作者:xmlorg
--  发布时间:6/2/2005 4:08:00 AM

--  
不是什么新东西
access - asp - xml -xsl

为什么不直接 access - asp呢?


--  作者:chinagaox
--  发布时间:6/3/2005 11:38:00 AM

--  
要JSP哟,不要用ASP,XML本来就是跨平台性,所以一切关于XML文件的工具都是用跨平台的才适应市场

本人实现了这个:用JSP调用SERVLET这个JAVA类,JDBC连接数据库,然后解析时用SAX方法(这是对大型XML文件操作的)
所有的操作都是在SERVLET中操作,JSP只是在网页上调用SERVLET而已,所以程序全是用JAVA写的。


--  作者:switer520
--  发布时间:6/6/2005 12:59:00 PM

--  
楼上的能提供一下代码,指导一下吗??谢谢!!email:switer520@yahoo.com.cn
--  作者:lomin2439
--  发布时间:6/8/2005 1:10:00 PM

--  
谁能提供一个例子能完整的?
那才较好阿
--  作者:tearangel_2004
--  发布时间:6/28/2005 5:31:00 PM

--  
学习
--  作者:pink
--  发布时间:7/11/2005 10:53:00 AM

--  
23楼的楼主,能否参考你做的源代码,谢谢!
chenfjpt@yeah.net
--  作者:huadian508c
--  发布时间:1/24/2006 4:24:00 PM

--  
楼主,源代码期待中...
--  作者:山丹丹花儿开
--  发布时间:1/24/2006 4:58:00 PM

--  
近来没有做什么,进来看看
--  作者:new_happy
--  发布时间:2/25/2006 11:32:00 PM

--  
不懂
--  作者:xpdai_z
--  发布时间:2/28/2006 10:30:00 AM

--  xml[建议]
可否传一个完整一点的代码
--  作者:feq58588
--  发布时间:3/19/2006 12:59:00 PM

--  
是不是只能有java来实现啊,其他的语言可以吗?
--  作者:acdfish
--  发布时间:3/21/2006 3:25:00 PM

--  
关注中。。。
--  作者:learnerhexiaojun
--  发布时间:3/24/2006 2:19:00 PM

--  
如何用java将数据库中的数据导出成XML文件?

--  作者:sqlhub
--  发布时间:4/19/2006 4:47:00 PM

--  
http://www.hgsql.com

--  作者:nancyln2006
--  发布时间:4/21/2006 4:37:00 PM

--  
新手初来此地,万分关注这个问题。
--  作者:baiecq
--  发布时间:4/26/2006 5:13:00 PM

--  
咱们这个方向有没有相关的群呀?
--  作者:wymm1981
--  发布时间:5/11/2006 10:59:00 PM

--  
大大!!太感谢了!!我也找到了!IBM的网站是个好地方!!
--  作者:mdisk
--  发布时间:5/14/2006 10:33:00 PM

--  
上不了那个网站,谁能把那个文件发给我啊?zhangqianbupt@sina.com    谢谢
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
308.594ms