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

 更新时间:2020年08月27日 11:39:27   作者:Ma_Jack  
这篇文章主要为大家详细介绍了java实现批量导入.csv文件到mysql数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这篇博文是在参加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();
 }
 }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • Spring MVC4.1服务器端推送实现过程解析

    Spring MVC4.1服务器端推送实现过程解析

    这篇文章主要介绍了Spring MVC4.1服务器端推送实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 详解JVM系列之对象的锁状态和同步

    详解JVM系列之对象的锁状态和同步

    锁和同步是java多线程编程中非常常见的使用场景。为了锁定多线程共享的对象,Java需要提供一定的机制来实现共享对象的锁定。当第二个线程进入同一个区域的时候,必须等待第一个线程解锁该对象。JVM是怎么做到的呢?快来一起看看吧。
    2021-06-06
  • 解读List list=new ArrayList()是怎么回事

    解读List list=new ArrayList()是怎么回事

    这篇文章主要介绍了解读List list=new ArrayList()是怎么回事,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • SpringBoot如何在运行时动态添加数据源

    SpringBoot如何在运行时动态添加数据源

    这篇文章主要介绍了SpringBoot如何在运行时动态添加数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java CountDownLatch应用场景代码实例

    Java CountDownLatch应用场景代码实例

    这篇文章主要介绍了Java CountDownLatch应用场景代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java BufferedImage转换为MultipartFile方式

    Java BufferedImage转换为MultipartFile方式

    这篇文章主要介绍了Java BufferedImage转换为MultipartFile方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 解决json串和实体类字段不一致的问题

    解决json串和实体类字段不一致的问题

    这篇文章主要介绍了解决json串和实体类字段不一致的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Java ArrayList集合详解(Java动态数组)

    Java ArrayList集合详解(Java动态数组)

    这篇文章主要介绍了Java ArrayList集合详解(Java动态数组),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Spring Boot XSS 攻击过滤插件使用

    Spring Boot XSS 攻击过滤插件使用

    这篇文章主要介绍了Spring Boot XSS 攻击过滤插件使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 解析java.library.path和LD_LIBRARY_PATH的介绍与区别

    解析java.library.path和LD_LIBRARY_PATH的介绍与区别

    这篇文章主要介绍了java.library.path和LD_LIBRARY_PATH的介绍与区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05

最新评论