それぞれ 400 ~ 500 行の 500 個の CSV ファイルを作成する必要があります。ただし、CSV ファイルはオンラインでexample.com/report.csv.gz
. したがって、各 csv ファイルは圧縮され、URL への接続になります。
だから、私は使用しています
in = new BufferedReader(new InputStreamReader(new GZIPInputStream(connection.getInputStream())));
最初に解凍してCSVデータを取得し、次にPreparedStatement
各行で使用してmySQLデータベースにデータを入力します。しかし、それには長い時間がかかります (たった 14 個の CSV で約 20 秒)。
したがって、より高速な入力方法に関する他のいくつかの投稿で示唆されているように、LOAD DATA INFILE を使用したいと考えています。
誰かがコードを手伝ってくれますか? LOAD DATA INFILE はファイル用であり、すべての CSV データを格納する変数があるためです。他の提案は大歓迎です。
ありがとう。
while ((inputLine = in.readLine()) != null){
html+=inputLine; // Variable to store the CSV <---
String[] rowItems = inputLine.split(",");
String insertTableSQL = "INSERT INTO tableX"
+ "(a, b, c, d, e, F, g, h, i, j, k, l, m) VALUES"
+ "(?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement preparedStatement = conn.prepareStatement(insertTableSQL);
for(int i = 0 ; i < rowItems.length; i++){
preparedStatement.setString(i+1, rowItems[i]);
}
preparedStatement .executeUpdate();
}
html
そのため、各リンクの CSV を保存するために使用している変数を使用して入力する方法があるかどうか疑問に思っていました。