批量csv导入mysql_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();

}

}

}

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值