java实现批量导入.csv文件到mysql数据库
这篇博文是在参加CCF时导入.csv文件时自己总结的,虽然NavicatForMysql可以导入.csv文件,可是当我导入的时候不知道是文件太大还是什么原因,总是会出现失败。然后就用java写了一个批量导入数据的类去导入该.csv文件,这里也没有考虑代码的结构,只是为了快速的完成这个工作,做一个总结。
packagecom.cqu.price_prediction.farm;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;
importjava.util.Scanner;
publicclassRead
{
privatestaticConnectioncon;
publicstaticvoidmain(String[]args)throwsFileNotFoundException,SQLException
{
longstartTime=System.currentTimeMillis();
Filefile=newFile("H:/AgriculturalProduct/data/farming.csv");
Scannerin=newScanner(file);
getConnect();
System.out.println("数据库连接成功");
insert_data(in);
longEndTime=System.currentTimeMillis();
longtime=(EndTime-startTime)/1000;
System.out.println("导入数据共用时:"+time);
}
privatestaticvoidinsert_data(Scannerin)throwsSQLException
{
intcount=0;
Stringsql="insertintofarming(province,market,type,name,standard,area,color,unit,minprice,avgprice,maxprice,entertime,time)"
+"values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
con.setAutoCommit(false);
PreparedStatementpstmt=con.prepareStatement(sql);
in.next();
while(in.hasNext())
{
Stringtemp1=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();
}
publicstaticintexecute(PreparedStatementpstmt,intcount)throwsSQLException
{
pstmt.executeBatch();
con.commit();
return0;
}
privatestaticvoidgetConnect()
{
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|SQLExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。