首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

导入csv资料

2012-12-27 
导入csv文件?package com.kylin.test.ImportCSVimport java.sql.Connectionimport java.sql.DatabaseMet

导入csv文件

?

package com.kylin.test.ImportCSV;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MetaDataInfoProvider {

?public int getMetaDataName(String m_TableName, Connection m_Connection) {
? int colCount = 0;
? try {
?? if (m_Connection == null) {
??? Class.forName("com.mysql.jdbc.Driver").newInstance();
??? m_Connection = DriverManager
????? .getConnection("jdbc:mysql://localhost:3306/db_extjs?;characterEncoding=gbk&useUnicode=true","admin","admin");
?? }

?? DatabaseMetaData m_DBMetaData = m_Connection.getMetaData();
?? ResultSet tableRet = m_DBMetaData.getTables(null, "%", m_TableName,
???? new String[] { "TABLE" });
?? while (tableRet.next())
??? System.out.println("Table name is:"
????? + tableRet.getString("TABLE_NAME"));

?? String columnName;
?? String columnType;

?? ResultSet colRet = m_DBMetaData.getColumns(null, "%", m_TableName,
???? "%");

?? while (colRet.next()) {

??? columnName = colRet.getString("COLUMN_NAME");
??? columnType = colRet.getString("TYPE_NAME");
??? int datasize = colRet.getInt("COLUMN_SIZE");
??? int digits = colRet.getInt("DECIMAL_DIGITS");
??? int nullable = colRet.getInt("NULLABLE");
??? String nullFlag;
??? if (nullable == 1) {
???? nullFlag = "Null";
??? } else {
???? nullFlag = "Not Null";
??? }

??? System.out.println(columnName + " " + columnType + "("
????? + datasize + "," + digits + ") " + nullFlag);

??? colCount++;
?? }
? } catch (SQLException e) {
?? e.printStackTrace();
? } catch (InstantiationException e) {
?? e.printStackTrace();
? } catch (IllegalAccessException e) {
?? e.printStackTrace();
? } catch (ClassNotFoundException e) {
?? e.printStackTrace();
? }
? System.out.println("The number of column is: " + colCount);
? return colCount;
?}

?public static void main(String args[]) {
? MetaDataInfoProvider mdip = new MetaDataInfoProvider();
? mdip.getMetaDataName("dim_customer", null);
?}

}

?

?

?

?

?

package com.kylin.test.ImportCSV;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

?
public class InsertDB extends Thread {

?private static final String user = "admin";
?private static final String pwd = "admin";
?private static final String url = "jdbc:mysql://localhost:3306/db_extjs?;characterEncoding=gbk&useUnicode=true";
?private static final String driver = "com.mysql.jdbc.Driver";
?private static String DELIMITERS = ",";

?public static String getDELIMITERS() {
? return DELIMITERS;
?}

?public static void setDELIMITERS(String delimiters) {
? DELIMITERS = delimiters;
?}

?public static Connection getCon() {
? Connection con = null;
?
? try {

?? Class.forName(driver).newInstance();
?? con = DriverManager.getConnection(url, user, pwd);
?? if (con != null) {
??? System.out.println("你已连接到数据库:" + con.getCatalog());
?? }

? } catch (Exception e) {
?? System.out.println("连接数据库失败!");
?? e.printStackTrace();
? }

? return con;

?}

?public boolean insertDB(String tablename, long rc) {
? if (rc < 1) {
?? rc = 100;
? }
? Connection con = null;
? Statement stm = null;
? boolean flag = false;
? Statement pre;
?
? String sql = "";
? MetaDataInfoProvider mdip = new MetaDataInfoProvider();
? try {
?? con = getCon();
?? stm = con.createStatement();
?? pre=con.createStatement();
?? int colCount = mdip.getMetaDataName(tablename, con);
?? int rowCount = 0;

?? File raf = new File("c:/Tempaltes.csv");
?? BufferedReader buf = null;
?? buf = new BufferedReader(new InputStreamReader(new FileInputStream(
???? raf)));

? // FileWriter fw = new FileWriter("f:/dim_customer_new.sql", true); //以文件方式输出
? // BufferedWriter bw = new BufferedWriter(fw);

?? String line_record = buf.readLine();
??
?? long sqlstart = System.currentTimeMillis(); //开始计时
??
?? while (line_record != null) {

??? // 解析每一条记录
??? sql = "insert into " + tablename + " values('";
???
??? String[] fields = line_record.split(DELIMITERS);
???
???
????? //对Insert语句的合法性进行判断
?????
?????? if(fields.length!=colCount){
?????? System.out.println("要插入的数据列数和表的数据列不相匹配,停止执行"); break; }
???
???
??? for (int i = 0; i < fields.length; i++) {
???? sql += fields[i];
???? if (i < fields.length - 1) {
????? sql += "','";
???? }
??? }
???
??? sql += "');";

??? // 在控制台输出SQL语句
?? // System.out.println(sql);

???
???? //执行SQL语句
???? // stm.executeUpdate(sql); //直接执行效率比较低
??? pre.addBatch(sql);
???
???
??? rowCount++;
??? line_record = buf.readLine();
??? if (rowCount >= rc)
???? break;
?? }
?? pre.executeBatch();
?? pre.close();
?//? bw.flush(); // 将数据更新至文件
?//? bw.close();
?//? fw.close();
??
?//? bw.close();
?//? fw.close();
??
?? System.out.println("共写入行数:" + rowCount);
??
?? long sqlend = System.currentTimeMillis(); //停止计时
??
?? System.out.println("执行时间为:" + (sqlend - sqlstart) + " ms");

? } catch (Exception e) {
?? flag = false;
?? e.printStackTrace();
? } finally {
?? close(null, stm, con);
? }
? return flag;
?}

?// 关闭相关连接

?public void close(ResultSet rs, Statement stm, Connection con) {
? if (rs != null)
?? try {
??? rs.close();
?? } catch (Exception e) {
??? e.printStackTrace();
?? }

? if (stm != null)
?? try {
??? stm.close();
?? } catch (Exception e) {
??? e.printStackTrace();
?? }

? if (con != null)
?? try {
??? con.close();
?? } catch (Exception e) {
??? e.printStackTrace();
?? }
?}
??? public void run() {

??????
???????? this.insertDB("person", 500000);


??????? }

?public static void main(String[] args) {
? InsertDB insertDB1 = new InsertDB();
? insertDB1.start();
?
//? InsertDB insertDB2 = new InsertDB();
//? insertDB2.start();
?
?}
}

?

?

?

?

?

?

?

?

?

?

?

?

热点排行