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代码
本文标题:java实现批量导入.csv文件到mysql数据库
本文地址:http://www.codeinn.net/misctech/122272.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




