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(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。