1

我需要填充 500 个 CSV 文件,每个文件有 400-500 行。但 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 的变量进行填充。

4

1 回答 1

1

您应该使用批处理更新: http: //docs.oracle.com/cd/B28359_01/java.111/b31224/oraperf.htm#CHDCCEHD

于 2013-05-30T20:47:52.993 回答