- 浏览: 338830 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
pacoson:
感谢楼主。请受小生一拜。
ANT预编译JSP -
zhuhongming123:
一楼的同学Lucene4.* 以上的 已经改成了Numeric ...
Lucene日期排序及组合查询 -
ywjk520:
RangeQuery在哪个包里?
Lucene日期排序及组合查询 -
willwen:
有个疑问,楼主,为何初始化bits 从txt读取已有的网址是直 ...
布隆过滤器(Bloom Filter)之java实例 -
yu_226528:
还不如没有呢
jFreeChart 在jsp页上实现简单的折线图、柱状图
最近公司做的项目中要求把项目实施单位的原有系统中的表导入到我们公司现在的数据库中,原系统数据库与现数据库的表结构不太一样,只是把对应字段中的记录导入到现在数据库中,就写了这么一个小程序来辅助完成。
import java.sql.Connection; /** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: </p> * @author zfsn * @version 2009/11/28 */ public class DBConvert { //原表数据库驱动及密码 String fdriverClassName = "net.sourceforge.jtds.jdbc.Driver"; String fjdbcurl = "jdbc:jtds:sqlserver://localhost:1433/OA1"; String fdbuser ="sa"; String fdbpassword =""; //目标表数据库驱动及代码 String tdriverClassName = "net.sourceforge.jtds.jdbc.Driver"; String tjdbcurl = "jdbc:jtds:sqlserver://localhost:1433/OA"; String tdbuser ="sa"; String tdbpassword =""; //ftable原数据库表名,fcolumn原表对应字段 //ttable目标数据库表名,tcolumn目标表对应字段 //dir生成xml存放路径,xmlFile生成的xml名称 String ftable[]={"jhbj_gov_acceptdocument","jhbj_gov_accepttype"}; String ttable[]={"oaxietong_GSXX","oaxietong_GSLB"}; String fcolumn[][]={{"acceptD_id","acceptD_bh","acceptD_zh","acceptD_bt","acceptD_bm","acceptD_sj","acceptD_ztc","acceptT_id"},{"acceptT_id","acceptT_name","acceptT_describe","Del_Flag"}}; String tcolumn[][]={{"GWID","GWWH","GWRY","GWBT","GWZS","GWSJ","GWZY","GWLB"},{"LBID","LBMC","LBSM","LBBJ"}}; String dir="c:/"; String xmlFile[]={"jhbj_gov_acceptdocument.xml","jhbj_gov_accepttype.xml"}; //生成的xml文件 public void DBToXml(){ MDBToXML dbToXml=new MDBToXML(); try { Connection conn=dbToXml.getConn(fdriverClassName, fjdbcurl, fdbuser, fdbpassword); dbToXml.BuildXMLDoc(conn, ftable, dir); } catch (Exception e) { System.out.println("表导出失败,请与管理员联系"); e.printStackTrace(); } } //将xml的内容导入到目标表中 public void XmlToDB(){ MXMLToDB mXmlToDB=new MXMLToDB(); try { Connection conn=mXmlToDB.getConn(tdriverClassName, tjdbcurl, tdbuser, tdbpassword); mXmlToDB.ParseXMl(conn, ftable, ttable, fcolumn, tcolumn, dir, xmlFile); } catch (Exception e) { System.out.println("表插入失败,请与管理员联系"); e.printStackTrace(); } } /*执行表导入之前一定要取消目标表的主键及标识(为否),并将目标表的外键关系取消 执行结束后恢复主键、标识、外键关系 导出表与导入表列数与类型必须一致 导出表生成的xml以导出表对应的名字命名 将被导入数据库表中对应字段的长度设为足够大,以便容纳下将要导入的数据*/ public static void main(String[] args){ DBConvert dbConvert=new DBConvert(); //表导出 dbConvert.DBToXml(); //表导入 dbConvert.XmlToDB(); } }
import java.io.FileOutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import org.jdom.Document; import org.jdom.Element; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; /** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: </p> * @author zfsn * @version 2009/11/28 */ public class MDBToXML { public void BuildXMLDoc(Connection conn,String tables[],String dir)throws Exception{ for(int i=0;i<tables.length;i++){ //创建根节点以表的名字为根节点 Element rootElement = new Element("dbData"); //根节点添加到文档中 Document myDocument = new Document(rootElement); //将表中的内容查处放到resultset ResultSet resultset= selectTable(conn,tables[i]); ResultSetMetaData rsmd=resultset.getMetaData(); //获得表中所包含的列数 int numCols = rsmd.getColumnCount(); //System.out.println("db_to_xml:numCols:" + numCols); //每个表都清零一次以便统计每个表有多少个元素 int j=1; while (resultset.next()) { //以表名为元素名,并且为每个元素设置number编号 Element elements=new Element(tables[i]); elements.setAttribute("number",""+j++); //遍历每一列,并取得元素值 for (int k=1; k <= numCols; k++) { String colval=resultset.getString(k); //如果没有元素设置为空字符串 if(resultset.wasNull()){ colval=" "; } //将表中每一个字段的名和值添加到元素中 elements.addContent(new Element(rsmd.getColumnName(k)).setText("\'"+colval+"\'")); } rootElement.addContent(elements); } //将doc写到指定的xml中 XMLOutputter XMLOut=new XMLOutputter(Format.getPrettyFormat()); XMLOut.output(myDocument, new FileOutputStream(dir+tables[i]+".xml")); } System.out.println("数据库中的表导出成功!!导出位置为"+dir); } public Connection getConn(String fdriverClassName,String fjdbcurl,String fdbuser,String fdbpassword)throws Exception{ Class.forName(fdriverClassName); Connection conn=DriverManager.getConnection(fjdbcurl,fdbuser,fdbpassword); return conn; } public ResultSet selectTable(Connection conn,String tableName)throws Exception{ Statement stat=conn.createStatement(); String sql="select *from " +tableName; ResultSet rs=stat.executeQuery(sql); return rs; } }
import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; /** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: </p> * @author zfsn * @version 2009/11/28 */ public class MXMLToDB { @SuppressWarnings("unchecked") public void ParseXMl(Connection conn,String ftable[],String ttable[],String fcolumn[][],String tcolumn[][],String dir,String xmlFile[]) throws Exception { //判断输入的原表跟目标表的长度和原表字段与目标表的字段是否一样长 if(isEquals(ftable, ttable)==true) { for(int j=0;j<fcolumn.length;j++){ if(fcolumn[j].length!=tcolumn[j].length){ System.out.println("输入的原表跟目标表的长度不一样或者原表字段与目标表的字段不一样!"); return; } } }else{ System.out.println("输入的原表跟目标表的长度不一样或者原表字段与目标表的字段不一样!"); return; } //删除原表中的内容 for(int j=0;j<ttable.length;j++){ String tableName=ttable[j]; String sql="delete from "+ tableName; executeTable(conn,sql); System.out.println("原表中的数据删除成!!!"); } SAXBuilder sb = new SAXBuilder();// 建立构造器 for(int xx=0;xx<xmlFile.length;xx++){ Document doc = sb.build(new FileInputStream(dir+xmlFile[xx]));// 读入指定文件 Element root = doc.getRootElement();// 获得根节点 List list = root.getChildren();// 将根节点下的所有子节点放入List中 for (int i = 0; i < list.size(); i++) { Element item = (Element) list.get(i);// 获取节点实例 //String tableName = item.getName();// 获得元素节点的值为表名 //System.out.println("-----------" + tableName); // 获得所有的content一个[[Text:], [Element: <title/>], [Text:], [Element: // <content/>], [Text: ], // [Element: <email/>], [Text:]] List llist = item.getContent(); Iterator it = llist.iterator(); // 获取表中每一个字段的值,如title,content,email,放到columnList List columnList = new ArrayList(); while (it.hasNext()) { Object object = it.next(); if (!object.toString().substring(1, 2).equals("T")) columnList.add(object.toString().substring( object.toString().indexOf("<") + 1, object.toString().indexOf("/"))); else { continue; } } Map columndata = new HashMap();// 存储表字段与对应的值 Iterator column = columnList.iterator(); while (column.hasNext()) { // System.out.println(column.next()); String columnname = column.next().toString(); String value = item.getChild(columnname).getText();// 取得属性值 //将xml中的字段拿出来与给定原表的字段比较,如果相等转换为目标表的字段并存储到map中 for(int k=0;k<fcolumn[xx].length;k++){ if(columnname.equals(fcolumn[xx][k])){ columndata.put(tcolumn[xx][k], value); //System.out.println(tcolumn[xx][k]+"-->"+ value); } } } //拼sql语句 String aa = "", bb = ""; int m = 0; //遍历map中的key,value组成表中的一行 Set<Map.Entry> set = columndata.entrySet(); for (Map.Entry me : set) { if("id".equals(me.getKey()))continue; else{ String key = (String) me.getKey(); String value = (String) me.getValue(); if (m != 0) { aa = aa + "," + key; bb = bb + "," + value; } else { aa = key; bb = value; } m++; } } if(!"".equals(aa)&&!"".equals(bb)){ String sql = "insert into " + ttable[xx] + "(" + aa + ") values (" + bb + ")"; System.out.println(sql); executeTable(conn,sql); }//if } }//for xx System.out.println("祝贺你导入成功!!!"); } public static void executeTable(Connection conn,String sql)throws Exception{ Statement stat=conn.createStatement(); stat.execute(sql); } public Connection getConn(String fdriverClassName,String tjdbcurl,String tdbuser,String tdbpassword)throws Exception{ Class.forName(fdriverClassName); Connection conn=DriverManager.getConnection(tjdbcurl,tdbuser,tdbpassword); return conn; } public static boolean isEquals(String fSource[],String tSource[] ){ return(fSource.length==tSource.length?true:false); } }
- DBconvert.rar (4.7 KB)
- 下载次数: 28
发表评论
-
HttpClient 学习整理
2010-12-02 14:05 747一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
Log4j配置详解
2010-11-19 15:36 9021.Log4j日志管理系统简 ... -
C++和JNI的数据转换(3)
2010-09-29 14:58 926Java 测试native代码这没有什么多说的,看代码吧 ... -
C++和JNI的数据转换(2)
2010-09-29 14:49 1039全部的C/C++方法实现代码如下: /**//*** ... -
C++和JNI的数据转换(1)
2010-09-29 14:42 1753<script type="text/java ... -
ANT预编译JSP
2010-09-07 22:27 2495<?xml version="1.0" ... -
java操作Excel(jxl)
2010-08-05 09:27 1054package test;import jxl.*; ... -
什么是Jetty
2010-05-21 17:03 1012Jetty 是一个开源的servlet ... -
使用jetty作为嵌入式web容器(部署war文件)
2010-05-21 16:58 1222由于工作的需要,仓促的摸了一把jetty,觉得jetty在作为 ... -
一段分页代码PaginationSupport.java
2010-05-01 16:37 1257package com.iteye.common.hibern ... -
response.sendRedirect() 的session丢失问题
2010-04-29 10:42 2866使用时response.sendRedirect(),如果 ... -
EHCACHE简介
2010-04-25 19:37 948二级缓存 EHCache是一个 ... -
jFreeChart 在jsp页上实现简单的折线图、柱状图
2010-02-08 14:22 3601创建柱状图 1 引入jFreech ... -
用dom4j实现openfire式导航菜单
2010-01-06 22:26 1587借鉴Openfire项目中 ... -
Jxl简析(二)
2009-11-30 18:31 996(二)应用 在进行实践前,我们需要对excel ... -
Jxl简析(一)
2009-11-30 18:28 1157最近,完成了一个网上报表系统,刚巧用到了一个JAVA操作exc ... -
JavaMail API详解
2009-11-26 16:12 822版权声明:本文可以自由转载,转载时请务必以超链接形式标明文 ... -
FCKeditor 2.6.3与FCKeditor.java 2.4在JSP中配置
2009-11-26 16:08 23511.FCKeditor 介绍 FCKeditor 这个开 ... -
IE6中奇偶中文参数乱码的问题
2009-11-14 12:55 2687form是以post方式传递的,pager-taglib中接受 ... -
java.lang.OutOfMemoryError: Java heap space解决方法
2009-11-12 17:44 1295//首先检查程序有没有 ...
相关推荐
java实现mysql数据库的表导出到excel文件,已经基本的demo包含jar包,可以导入的eclipse里面。比较好用吧
可以将excel中的内容导入到mssql数据库中,也可以将MSSQL中的数据导出到Excel中.在导入时还可选择字段进行导入,并且原程序全部公开
java语言实现excel表的导入与导出,以固定表格的形式导出excel表,导入时可根据表结构的不同而选择导入的字段。
java通用导入模板,主要使用自定义注解和反射技术,通用导出模板同样是使用反射技术,通过注解对应字段来控制导出字段
* var dynCondVal = startDate + "," + endDate;...//字段要展示的字段 key@分割 var report_name="非持卡人交易量分析";// 报表名词 var merge="1@1@3@5";//合并 要合并的格 1不用合并 2表示合并二格 否则上下合并
springm使用easypoi导入导出
文件导入导出工具类,以及自定义导出字段注解;文件导入导出工具类,以及自定义导出字段注解;
可以对导入/导出的数据进行编码转换。例:在用户表中的sex性别字段,数据存储为:0:男;1:女,则在导出数据的时候可以对编码进行转换,导出结果为男/女。同样在导入时,可以将文字转换为编码存储到数据库中。
shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形...该方法通过java代码实现将shp文件的数据读取以及存入数据库
kettle通过java代码将数据库blob 字段抽取到本地文件
Java导入Excel文件返回数据对应属性类字段,Java导出Excel文件如何让数据对应指定的标题字段-附件资源
java读取解析图书MARC数据的iso文件
用java把excel表的数据导入到数据库(可能有些类型还没考虑完全,抽空写的) 简单的思路 一、先获取数据库表的字段名、主键名, 二、读取excel文件的数据(注意:excel文件的数据表字段的顺序与该表的顺序一致,...
我的导入校验项目;excel导入时对字段进行复杂校验,然后存储到表,存储导出结果
最近做了个医疗行业的病案DBF文件导入导出的工具,解决了字段大于255无法写入数据的问题,花了好长时间,共享出来,
主要介绍了Java中easypoi导入excel文件列名相同的处理方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
此程序用于解析excel表格,通过java程序导入excel数据到数据库,实现excel表与数据库字段的映射。也可以通过程序将数据库中数据导出到excel
web中使用POI导入导出EXCEL文件的例子 struts1.x的例子,struts2.x可以参考自己修改 1.action的写法 import java.io.*; import java.sql.*; import java.util.ArrayList; import javax.servlet....