欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

java实现批量导入.csv文件到mysql数据库

时间:2021-05-16 09:37:00|栏目:JAVA代码|点击:

这篇博文是在参加CCF时导入.csv文件时自己总结的,虽然NavicatForMysql可以导入.csv文件,可是当我导入的时候不知道是文件太大还是什么原因,总是会出现失败。然后就用java写了一个批量导入数据的类去导入该.csv文件,这里也没有考虑代码的结构,只是为了快速的完成这个工作,做一个总结。

package com.cqu.price_prediction.farm;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
 
public class Read
{
 private static Connection con;
 
 public static void main(String[] args) throws FileNotFoundException, SQLException
 {
 
 long startTime = System.currentTimeMillis();
 File file = new File("H:/AgriculturalProduct/data/farming.csv");
 
 Scanner in = new Scanner(file);
 
 getConnect();
 System.out.println("数据库连接成功");
 insert_data(in);
 
 long EndTime = System.currentTimeMillis();
 long time = (EndTime - startTime) / 1000;
 
 System.out.println("导入数据共用时:" + time);
 }
 
 private static void insert_data(Scanner in) throws SQLException
 {
 int count = 0;
 String sql = "insert into farming (province,market,type,name,standard,area,color,unit,minprice,avgprice,maxprice,entertime,time)"
  + "values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
 
 con.setAutoCommit(false);
 PreparedStatement pstmt = con.prepareStatement(sql);
 in.next();
 while (in.hasNext())
 {
  String temp1 = in.nextLine();
  String[] temp = temp1.split(",");
 
  if (temp.length < 13)
  continue;
 
  if (temp.length == 13)
  {
  pstmt.setString(1, temp[0]);
  pstmt.setString(2, temp[1]);
  pstmt.setString(3, temp[2]);
  pstmt.setString(4, temp[3]);
  pstmt.setString(5, temp[4]);
  pstmt.setString(6, temp[5]);
  pstmt.setString(7, temp[6]);
  pstmt.setString(8, temp[7]);
  pstmt.setString(9, temp[8]);
  pstmt.setString(10, temp[9]);
  pstmt.setString(11, temp[10]);
  pstmt.setString(12, temp[11]);
  pstmt.setString(13, temp[12]);
  }
 
  pstmt.addBatch();
 
  count++;
 
  if (count == 20000)
  {
  count = execute(pstmt, count);
  }
 }
 pstmt.executeBatch();
 con.commit();
 
 }
 
 public static int execute(PreparedStatement pstmt, int count) throws SQLException
 {
 
 pstmt.executeBatch();
 con.commit();
 return 0;
 
 }
 
 private static void getConnect()
 {
 try
 {
  Class.forName("com.mysql.jdbc.Driver");
  con = DriverManager.getConnection(
   "jdbc:mysql://localhost:3306/agricultural_price_prediction?useUnicode=true&characterEncoding=utf8&useServerPrepStmts=false&rewriteBatchedStatements=true",
   "root", "123456");
 }
 catch (ClassNotFoundException | SQLException e)
 {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
 
}

上一篇:Java 遍历取出Map集合key-value数据的4种方法

栏    目:JAVA代码

下一篇:JS实现冒泡排序,插入排序和快速排序并排序输出

本文标题:java实现批量导入.csv文件到mysql数据库

本文地址:http://www.codeinn.net/misctech/122272.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有