`

实现数据库中的数据(db data)转化成document文档 实现jdbc批量插入数据

阅读更多

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.log4j.Logger;

/**
 * 一.实现数据库中的数据(db data)转化成document文档
 *
 * 二。实现jdbc批量插入数据
 * */
public class DBDataToXmlDomTest {
 private static Logger log = Logger.getLogger(DBDataToXmlDomTest.class);
 private static BasicDataSource ds = null;

 public DBDataToXmlDomTest() {
 }

 public static void main(String[] args) throws Exception {
  init();
  // dbToDom();
  tableDataToXmlDom("tRoom");
 }

 /** jdbc 批量插入* */
 public void batchInsert(List sqllist) {
  Connection con = null;
  Statement st = null;
  try {
   con = getConnection();// 获得连接
   con.setAutoCommit(false);
   st = con.createStatement();
   for (int i = 0; i < sqllist.size(); i++) {
    String sql = sqllist.get(i).toString();
    st.addBatch(sql);
    // 51条sql执行一次批量插入
    if (i != 0 && i % 50 == 0) {
     st.executeBatch();
     con.commit();
    }
   }
   if (st != null) {
    st.executeBatch();
    con.commit();
   }
  } catch (Exception e) {
   log.error("批量导入异常!!", e);
   System.out.println("批量导入异常!!");
   System.out.println("batchInsert  " + e);
  } finally {
   try {
    st.close();
    con.close();
   } catch (SQLException e) {
   }
  }
 }

 /*
  * 把数据库中的数据转化成dom对象
  */
 public static void dbToDom() {
  try {
   StringBuffer dom = new StringBuffer();
   List tables = getTableList();
   for (int i = 0; i < tables.size(); i++) {
    String tableDom = tableDataToXmlDom((tables.get(i)).toString());
    dom.append(tableDom);
   }
   // System.out.println(dom.toString());
   // 写到文件中
   System.out.println("*****start write*****");
   File file = new File("d:/SystemData.xml");
   OutputStream os = new FileOutputStream(file);
   os.write(dom.toString().getBytes());
   os.close();
   System.out.println("*****finish*****");
  } catch (Exception e) {
   System.out.println(e);
  }
 }

 /* 获取指定数据库中所有表的名字 */
 public static List getTableList() throws SQLException {
  List tables = new ArrayList();
  Connection con = getConnection();// 获得连接
  ResultSet rs = con.getMetaData().getTables(null, null, "", null);
  while (rs.next()) {
   // System.out.println(rs.getString(3));
   tables.add(rs.getString(3));
  }
  return tables;
 }

 /* 清空表中的记录 */
 public static void truncateTable(String tableName) throws SQLException {
  Connection con = getConnection();// 获得连接
  Statement st = con.createStatement();
  String sql = "truncate table " + tableName;
  ResultSet rs = st.executeQuery(sql);
  rs.close();
  con.close();// 释放连接
 }

 /*
  * 功能: 把一个数据库表中的数据转化成dom对象
  *
  * param:tableName 表名
  */
 public static String tableDataToXmlDom(String tableName)
   throws SQLException {
  int blank1 = 1;// 空格符数
  int blank2 = 2;

  Connection con = getConnection();// 获得连接
  Statement st = con.createStatement();
  String sql = "select  *  from  " + tableName;
  ResultSet rs = st.executeQuery(sql);
  ResultSetMetaData metaData = rs.getMetaData();
  int columnCount = metaData.getColumnCount();
  StringBuffer tbDom = new StringBuffer();
  while (rs.next()) {
   tbDom.append(blank(blank1));
   tbDom.append("<" + tableName + ">").append(enter());
   for (int i = 1; i <= columnCount; i++) {
    String columnName = metaData.getColumnLabel(i);
    tbDom.append(blank(blank2)).append("<" + columnName + ">");
    int type = metaData.getColumnType(i);
    switch (type) {
    case Types.VARCHAR:
     tbDom.append(singleQuote(rs.getString(i)));
     break;
    case Types.TIMESTAMP:
     tbDom.append(dealDate(rs.getDate(i)));
     break;
    case Types.INTEGER:
     tbDom.append(rs.getInt(i));
     break;
    case Types.FLOAT:
     tbDom.append(rs.getFloat(i));
     break;
    case Types.BIGINT:
     tbDom.append(rs.getLong(i));
    default:
     tbDom.append(rs.getString(i));
    }
    tbDom.append("</" + columnName + ">").append(enter());
   }
   tbDom.append(blank(blank1));
   tbDom.append("</" + tableName + ">").append(enter());
  }
  System.out.println(tbDom.toString());
  rs.close();
  con.close();// 释放连接
  return tbDom.toString();
 }

 /*
  * 功能:返回指定长度的空格字符串
  *
  * param length 指定长度
  */
 public static String blank(int length) {
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < length; i++) {
   sb.append(" ");
  }
  return sb.toString();
 }

 /*
  * 功能:返回回车换行符号
  */
 public static String enter() {
  StringBuffer sb = new StringBuffer();
  sb.append("\r\n");
  return sb.toString();
 }

 /*
  * 功能:给字符串数据加上单引号
  *
  * 处理 varchar 类型数据
  */
 public static String singleQuote(String str) {
  if (str == null) {
   return null;
  } else if (str.equals("")) {
   return "''";
  } else {
   return "'" + str + "'";
  }
 }

 /*
  * 处理 datetime 类型数据
  */
 public static String dealDate(Date dt) {
  if (dt == null) {
   return null;
  } else {
   return "'" + dt + "'";
  }
 }

 public static void init() {
  if (ds != null) {
   try {
    ds.close();
   } catch (Exception e) {
    //
   }
   ds = null;
  }
  try {
   Properties p = new Properties();
   // �? .连接my sql 数据�?
   p.setProperty("driverClassName", "com.mysql.jdbc.Driver");
   p
     .setProperty(
       "url",
       "jdbc:mysql://localhost:3306/NetDetective?useUnicode=true&characterEncoding=UTF-8");
   p.setProperty("username", "xxxxxx");
   p.setProperty("password", "xxxxxx");
   p.setProperty("initialSize", "1");
   p.setProperty("minIdle", "1");
   p.setProperty("maxActive", "50");
   ds = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);
  } catch (Exception e) {
   System.out.println(e);
  }
 }

 public static synchronized Connection getConnection() throws SQLException {
  Connection conn = null;
  if (ds != null) {
   conn = ds.getConnection();// 获得连接
  }
  return conn;
 }
}

分享到:
评论

相关推荐

    Java实现XML导入不同数据库,从数据库导出数据到XML

    - 插入数据到数据库: ```java Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement stmt = conn.prepareStatement("INSERT INTO table (column) VALUES (?)"); stmt....

    java实现本地读取图片存储到数据库中并在html网页显示

    首先,我们需要理解的是,将图片存储到数据库中通常采用的方法是将图片转换为二进制数据流。这是因为数据库系统更善于处理结构化数据,而不是像图片这样的非结构化数据。在Java中,我们可以使用`java.io`和`java.nio...

    数据库中的数据转储为XML格式的数据

    数据库中的数据转换为XML格式是一项常见的任务,尤其在数据交换、数据存储或数据解析等场景中。XML(可扩展标记语言)是一种结构化数据表示语言,具有自我描述性且易于机器解析,使得它成为跨平台数据传输的理想选择...

    solr连接数据库配置

    在实际应用中,你可能需要根据你的数据库类型(例如,MySQL、Oracle、SQL Server等)调整`data-config.xml`中的数据源类型和驱动类。同时,确保正确设置数据库连接参数,如URL、用户名和密码,以及查询语句以匹配你...

    java采集网页信息,并获取到所需要的信息存入数据库中对应的字段中去

    // 插入数据 String sql = "INSERT INTO your_table (column_name) VALUES (?)"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, data); stmt.executeUpdate(); } catch ...

    Database Design 英文版

    - 本章讨论了如何使用Java持久化架构(JPA)在Java应用程序中实现数据的持久化,包括域模型与视图的概念、JPA的特点、JPQL以及如何下载和配置JPA实现等。 通过以上对数据库设计基础知识的详细介绍,我们不仅了解了...

    solr运行配置与数据库数据导入到solr

    8. **配置db-data-config.xml**:编辑`db-conf/db-data-config.xml`文件,定义数据源、文档名称以及要导入的数据库表和字段,例如: ```xml &lt;dataConfig&gt; &lt;dataSource type="JdbcDataSource" driver=...

    orientdb手册

    解释如何在 OrientDB 中实现继承机制,以及它对数据模型的影响。 **2.3 模式 (Schema)** 详细介绍 OrientDB 的模式系统,包括如何设计和维护模式。 #### 三、检索策略 (Fetching Strategies) **3.1 检索策略概述...

    ADO.NET本质论.pdf

    书中深入剖析了ado.net的本质,探索了类、接口、属性和方法的工作原理,同时还为其他数据访问api(包括oledb,ado,odbc和jdbc)的程序员,提供了有价值的参考材料。本书适合具有一定数据库基础的开发人员阅读,也可...

    使用lucenesolr搭建Oracle数据库全文搜索服务.docx

    为了实现从Oracle数据库导入数据至Solr进行全文搜索,需要完成以下步骤: 1. **配置数据源**: - 打开`db/conf/db-data-config.xml`,配置Oracle数据库的连接信息,例如: ```xml &lt;dataSource driver="oracle....

    vb.net编写的打印和打印预览datagrid中的数据

    通过以上步骤,开发者可以在VB.NET中实现对Access数据库中数据的显示、打印预览和打印功能。这不仅增强了用户界面的实用性,也展示了VB.NET在数据处理方面的强大能力。记住,始终确保代码的健壮性和用户体验,以便...

    sqoop1-1.4.6 documentation 英文文档

    `sqoop import-all-tables` 用于批量导入数据库中的所有表至 HDFS 或 Hive 表。 ##### 8.2 语法 与 `sqoop import` 类似,但无需指定具体表名。 ##### 8.3 示例调用 示例: ```sh sqoop import-all-tables \ --...

    apache-solr-dataimportscheduler

    在 Solr 中,数据导入是通过 Data Import Handler (DIH) 实现的,这是一个用于从外部数据源导入数据到 Solr 索引的工具。DIH 支持全量导入和增量导入,全量导入会将整个数据源重新导入,而增量导入只导入自上次导入...

    web程序设计题2[借鉴].pdf

    9. ADO(ActiveX Data Objects):ADO是Microsoft开发的内置服务器组件,它通过OLE DB桥接Web应用程序与数据库,使得开发者能够通过ASP技术在网页中执行SQL命令,实现数据库访问。 10. Session对象与Cookie:...

    编程中常遇到的英文缩写

    - **DML (Data Manipulation Language)**:数据操作语言,用于插入、更新和删除数据的SQL语句。 - **DQL (Data Query Language)**:数据查询语言,主要指SQL中的SELECT语句,用于检索数据。 - **TCL (Transaction ...

    greenplum-db-6.2.1-rhel7-x86_64.rpm

    greenplum-db-6.2.1-rhel7-x86_64.rpm Pivotal Greenplum 6.2 Release Notes This document contains pertinent release information about Pivotal Greenplum Database 6.2 releases. For previous versions ...

    使用GORM构建Spring Boot应用程序 Grails指南_ Grails框架.pdf

    同时,你可能还需要一个连接池,具体配置可以在GORM的官方文档中找到。 对于Spring Boot应用,我们通常会在`src/main/resources/application.yml`文件中配置GORM for Hibernate。这里你可以设置数据库连接信息,...

    ibatis讲义

    - **作用**:在 Java 项目中,iBatis 主要用于实现数据持久化,即处理 Java 应用程序与关系型数据库之间的交互。通过 iBatis,开发者可以更加专注于业务逻辑的编写,而无需过多关注 SQL 语句的编写和管理。 #### 二...

    运用JSP+ajax实现分类查询功能的实例代码

    2. **数据库连接**:在JSP中,通常使用Java的JDBC(Java Database Connectivity)API来连接和操作数据库。在本例中,可能有一个名为`SelectDB`的类负责与数据库的交互,包括查询操作。 3. **HTML和CSS布局**:为了...

Global site tag (gtag.js) - Google Analytics