讀取文字寫入資料庫
阿新 • • 發佈:2018-11-14
package dao; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner; public class text4 { /** * 讀取檔案 * * @param con * 資料庫訪問 * @param csvFilePath * 檔案路徑 */ private static Connection con; public static void main(String[] args) throws SQLException, IOException { long startTime = System.currentTimeMillis(); File file = new File( "D:/BaiduNetdiskDownload/MY_DATA.LSHY__PX.txt"); String encoding = "GBK"; InputStreamReader inputStreamReader = new InputStreamReader( new FileInputStream(file), encoding); // new FileInputStream(file)); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line = null; int count = 0; int a = 0; // String sql = "insert into outside_vehicle (HANGYE,GPYHANGYE,VEH_CODE,VEH_COLOR,INDUSTRY_TYPE,JIAMI_IDEN,WEIZHI,GPS_TIME,LONGITUDE,LATITUDE,GPS_SPEED,DBOARD_SPEED,LICHENG,DIRECTION,HAIBA,CAR_STATE,ALARM_STATE,LINKCODE)" // + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; String sql = "insert into jing_vehicle_seven (KEY_ZD,DATE_TYPE,VEH_CODE,VEH_COLOR,INDUSTRY_TYPE,GPS_TIME,LONGITUDE,LATITUDE,INSTANT_SPEED,DBOARD_SPEED,POSITIONING_STATE,FIRE_STATE,OVERSPEED_ALARM,EMERGENCY_ALARM,FATIGUE_DRIVING_ALARM,DIRECTION,ZLON,ZLAT,MATCHGRID,LINKCODE,LINKLEN,POINTTOLINE,LLON,LLAT,LONLAT5GEOKEY,LONLAT6GEOKEY,LONLAT7GEOKEY,LONLAT13GEOKEY,LONLAT14GEOKEY,LONLAT15GEOKEY,IDEN,AREA_HD)" + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; getConnect(); con.setAutoCommit(false); PreparedStatement pStatement = con.prepareStatement(sql); while ((line = bufferedReader.readLine()) != null) { ++a; if (a == 1) { continue; } String[] temp = line.split(","); if (temp.length <= 22) continue; // if (temp.length == 23) { if (temp.length == 32) { // // if(temp[2].contains("京")){ // continue; // } // if(temp[7].contains("-")){ // continue; // } // if(temp[8].contains("-")){ // continue; // } // pStatement.setString(1, temp[0]); // pStatement.setString(2, temp[1]); // pStatement.setString(3, temp[2]); // pStatement.setDouble(4, Double.parseDouble(temp[3])); // pStatement.setString(5, temp[4]); // pStatement.setDouble(6, Double.parseDouble(temp[5])); // pStatement.setString(7, temp[6]); // pStatement.setDouble(8, Double.parseDouble(temp[7])); // pStatement.setDouble(9, Double.parseDouble(temp[8])); // pStatement.setDouble(10, Double.parseDouble(temp[9])); // pStatement.setDouble(11, Double.parseDouble(temp[10])); // pStatement.setDouble(12, Double.parseDouble(temp[11])); // pStatement.setDouble(13, Double.parseDouble(temp[12])); // pStatement.setDouble(14, Double.parseDouble(temp[13])); // pStatement.setDouble(15, Double.parseDouble(temp[14])); // pStatement.setDouble(16, Double.parseDouble(temp[15])); // pStatement.setDouble(17, Double.parseDouble(temp[16])); // pStatement.setDouble(18, Double.parseDouble(temp[17])); pStatement.setString(1, temp[0].trim()); pStatement.setString(2, temp[1].trim()); pStatement.setString(3, temp[2].trim()); pStatement.setString(4, temp[3].trim()); pStatement.setString(5, temp[4].trim()); pStatement.setString(6, temp[5].trim()); pStatement.setDouble(7, Double.parseDouble(temp[6].trim())); pStatement.setDouble(8, Double.parseDouble(temp[7].trim())); pStatement.setString(9, temp[8].trim()); pStatement.setString(10, temp[9].trim()); pStatement.setString(11, temp[10].trim()); pStatement.setString(12, temp[11].trim()); pStatement.setString(13, temp[12].trim()); pStatement.setString(14, temp[13].trim()); pStatement.setString(15, temp[14].trim()); pStatement.setString(16, temp[15].trim()); pStatement.setDouble(17, Double.parseDouble(temp[16].trim())); pStatement.setDouble(18, Double.parseDouble(temp[17].trim())); pStatement.setString(19, temp[18].trim()); pStatement.setString(20, temp[19].trim()); pStatement.setString(21, temp[20].trim()); pStatement.setString(22, temp[21].trim()); pStatement.setDouble(23, Double.parseDouble(temp[22].trim())); pStatement.setDouble(24, Double.parseDouble(temp[23].trim())); pStatement.setString(25, temp[24].trim()); pStatement.setString(26, temp[25].trim()); pStatement.setString(27, temp[26].trim()); pStatement.setString(28, temp[27].trim()); pStatement.setString(29, temp[28].trim()); pStatement.setString(30, temp[29].trim()); pStatement.setString(31, temp[30].trim()); pStatement.setString(32, temp[31].trim()); pStatement.addBatch(); count++; System.out.println(count); // System.out.println(temp[2]); if (count == 200000) { count = execute(pStatement, count); } else if (count == 400000) { count = execute(pStatement, count); } else if (count == 600000) { count = execute(pStatement, count); } else if (count == 800000) { count = execute(pStatement, count); } } } pStatement.executeBatch(); con.commit(); // 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); } public static int execute(PreparedStatement pstmt, int count) throws SQLException { System.out.println("提交"); pstmt.executeBatch(); con.commit(); return 0; } private static void getConnect() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( // "jdbc:mysql://192.168.8.157:3306/stopsix_two_phase", // "vshop","fengyun2015"); "jdbc:mysql://localhost:3306/stopsix_two_phase", "root", "root"); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } }