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

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

相关文章

  • Java中两种基本的输入方式小结

    Java中两种基本的输入方式小结

    这篇文章主要介绍了Java中两种基本的输入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • SpringBoot项目优雅的全局异常处理方式(全网最新)

    SpringBoot项目优雅的全局异常处理方式(全网最新)

    这篇文章主要介绍了SpringBoot项目优雅的全局异常处理方式(全网最新),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 在Java中去除字符串末尾的换行符的常用方法小结

    在Java中去除字符串末尾的换行符的常用方法小结

    在日常开发中,字符串操作是非常常见的需求,其中去除字符串末尾的换行符(\n)是一个很有代表性的场景,本文将从 Java 的几种常用方法着手,全面解析如何去除字符串末尾的换行符,并结合代码示例和实际使用场景,帮助大家掌握这一技巧,需要的朋友可以参考下
    2024-12-12
  • 关于Android触摸事件分发的原理详析

    关于Android触摸事件分发的原理详析

    触摸事件分发机制一直以来都是Android中比较重要的一大块,自定义view,各种复杂的自定义手势交互都与触摸事件分发机制关系密,下面这篇文章主要给大家介绍了关于Android触摸事件分发原理的相关资料,需要的朋友可以参考下
    2022-01-01
  • 深入理解java虚拟机的故障处理工具

    深入理解java虚拟机的故障处理工具

    大家都知道在给系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。Java开发人员可以在jdk安装的bin目录下找到除了java,javac以外的其他命令。这些命令主要是一些用于监视虚拟机和故障处理的工具,下面来看看详细的介绍。
    2016-11-11
  • JAVA新手学习篇之类和对象详解

    JAVA新手学习篇之类和对象详解

    这篇文章主要给大家介绍了关于JAVA新手学习篇之类和对象的相关资料,Java是面向对象的编程语言,主旨在于通过对象封装属性和方法实现功能,面向对象与面向过程的区别在于关注点的不同,需要的朋友可以参考下
    2024-10-10
  • 基于JDK8总结java中的interrupt

    基于JDK8总结java中的interrupt

    本文是基于JDK8总结java中的interrupt知识,需要的朋友可以参考下
    2017-12-12
  • 对象存储服务MinIO快速入门(集成项目的详细过程)

    对象存储服务MinIO快速入门(集成项目的详细过程)

    MinIO是一个开源的对象存储服务,支持多种操作系统,配置简单且性能高,它使用纠删码进行数据保护,可以容忍硬件故障,MinIO支持多种语言的SDK和丰富的API,本文介绍对象存储服务MinIO快速入门,感兴趣的朋友一起看看吧
    2025-03-03
  • Java后台返回blob格式的文件流的解决方案

    Java后台返回blob格式的文件流的解决方案

    在Java后台开发中,经常会遇到需要返回Blob格式的文件流给前端的情况,Blob是一种二进制大对象类型,可以用于存储大量的二进制数据,例如图片、音频、视频等,本文将为你详细介绍如何在Java后台中返回Blob格式的文件流,需要的朋友可以参考下
    2024-08-08
  • Spring使用Setter完成依赖注入方式

    Spring使用Setter完成依赖注入方式

    这篇文章主要介绍了Spring使用Setter完成依赖注入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论