`

导入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();
 
 }
}

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Excel导入CSV文件

    标题中的“Excel导入CSV文件”指的是在Microsoft Excel中将逗号分隔值(Comma Separated Values, CSV)格式的数据导入到工作表中。CSV文件是一种常见的数据交换格式,因其简单和通用性而广泛使用。它以纯文本形式...

    2-Gbase导入csv文件教程(csv不要用Excel打开)

    2-Gbase导入csv文件教程(csv不要用Excel打开)

    PLSQL导入.csv文件.docx

    PLSQL 导入 CSV 文件 PLSQL 是 Oracle Corporation 开发的程序语言,主要用于开发 Oracle 数据库应用程序。CSV(Comma Separated Values)是通用的文件格式,用于存储表格数据。PLSQL 导入 CSV 文件是指使用 PLSQL ...

    asp.net 导入 CSV 文件

    ### ASP.NET导入CSV文件到数据库:深入解析与实践 在当今数据驱动的环境中,处理大量数据集成为软件开发中的常见需求。CSV(Comma Separated Values)文件因其简单且易于生成和读取的特点,在数据交换和存储方面被...

    web页面导入csv文件

    总结,实现Web页面导入CSV文件涉及前端HTML文件上传表单、后端的文件上传处理(使用Apache Commons库)、CSV文件的读取与解析,以及后续的数据处理。在实际应用中,还需考虑错误处理、性能优化和安全性措施。

    JAVA导入CSV文件

    CSV文件以逗号分隔各个字段,每一行代表一个记录,非常适合用来存储表格数据。当需要处理这些数据时,Java提供了一些库和方法来读取、解析和操作CSV文件,进而将这些数据写入数据库。 首先,我们来讨论如何在Java中...

    ExcelText改为导入CSV文件到表格---加入每列股票数据名称----vc6.0代码

    下面是一个基本的示例代码片段,演示了如何导入CSV文件并设置列标题: ```cpp #include #import "libid:0002443F-0000-0000-C000-000000000046" named_guids auto_rename using namespace Excel; int main() { ...

    jupyter 导入csv文件方式

    ### Jupyter导入CSV文件方式详解 #### 一、前言 在数据分析领域,Jupyter Notebook 是一种非常流行的工具,它不仅能够提供一个交互式的环境来编写代码,还能够直观地展示图表和其他数据可视化结果。而在实际操作...

    PLSQL导出CSV后中文乱码解决办法

    4. **设置编码**:导入CSV文件后,会有一个导入向导出现。在这个阶段,确保在“文件原格式”下拉菜单中选择“UTF-8”。这是确保正确显示中文字符的关键步骤,因为PLSQL导出的CSV文件通常使用UTF-8编码。 5. **加载...

    使用Python Pandas库批量导入CSV文件至DataFrame的技巧

    ### 使用Python Pandas库批量导入CSV文件至DataFrame的技巧 #### 一、环境设置与库的导入 在开始批量处理CSV文件之前,首先确保已经安装了Pandas库。如果未安装,可以在终端或命令行中运行如下命令进行安装: ```...

    ExcelText改为导入CSV文件到表格成功---------vc6.0代码

    在VC6.0环境下,将ExcelText改为导入CSV文件到表格的成功实现主要涉及到以下几个关键知识点: 1. **CSV文件格式**: CSV(Comma Separated Values)是一种常见的数据存储格式,以逗号分隔各个字段,易于读取和处理...

    把CSV文件导入到SQL Server表中的方法

    首先先让我们看一下CSV文件,该文件保存在我的D:盘下,名为csv.txt,内容是: 现在就是SQL Server的关键部分了; 我们使用的是SQL Server的BULK INSERT命令,关于该命令的详细解释,请点击此处; 我们先在SQL ...

    怎么把示波器导出的csv格式的数据导入matlab,并进行频谱分析[归纳].pdf

    其中,‘filename.csv’ 是要导入的 csv 文件的名称。 三、怎么进行频谱分析 频谱分析是信号处理和分析的重要步骤,MATLAB 提供了多种方法来进行频谱分析。其中一种常见的方法是使用 fft 函数来计算快速傅里叶变换...

    使用toad将csv数据导入oracle.rar

    2. **准备CSV文件**:确保CSV文件结构与Oracle表结构匹配,即字段数量、顺序和数据类型相一致。如果不同,可能需要对CSV文件进行预处理,如使用Excel或其他工具调整格式。 3. **创建或选择目标表**:在Oracle数据库...

    MySql导入CSV文件或制表符分割的文件

    在导入CSV文件之前,确保文件内容与表结构一致,且字段顺序对应。如果CSV文件包含非ASCII字符(如中文),则需要确认文件编码为UTF-8,以避免导入时出现乱码问题。如果原始文件不是UTF-8编码,可以使用文本编辑器...

    用JAVA将数据库导入csv程序

    在IT行业中,数据的导入与导出是常见的操作...总的来说,通过Java将数据库导入CSV程序,我们可以实现数据的高效迁移和共享,同时利用CSV的灵活性和通用性。对于Java开发者来说,掌握这样的技能对日常开发工作大有裨益。

    csv文件导入导出工具类

    csv的文件的导入导出可能会用的到,需要的可以下一下把

    PowerDesigner导入ExcelCSV脚本以及示例.rar

    在数据建模过程中,有时我们需要导入大量数据,此时Excel CSV文件就显得非常实用,因为它们可以方便地存储和处理大量结构化数据。"PowerDesigner导入Excel CSV脚本以及示例.rar"这个压缩包显然包含了如何在...

Global site tag (gtag.js) - Google Analytics