java - 在具有 csv 文件的变量上加载数据 infile

标签 java mysql database csv prepared-statement

我需要填充 500 个 CSV 文件,每个文件有 400-500 行。但 CSV 文件可作为 example.com/report.csv.gz 在线获取。所以每个 csv 文件都是压缩的,并且是到 URL 的连接。

所以,我正在使用

in = new BufferedReader(new InputStreamReader(new GZIPInputStream(connection.getInputStream())));

首先解压缩以获取 CSV 数据,然后我在每一行上使用 PreparedStatement 来 pouplate 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 的变量。

最佳答案

关于java - 在具有 csv 文件的变量上加载数据 infile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16845578/

相关文章:

java - 在 Java 中从 List 中提取 Map 的最短方法

java - 请问a.b和a$b有什么区别?

MySql 查询和 GROUP BY,我需要做哪些不同的事情?

android - 使用 Room Database(Room Persistence Library) 创建触发器

java - 为什么SynchronousQueue允许其他线程随机取?

java - 使用 CamelBlueprintTestSupport 时的 NPE

mysql - 即使父行都存在,也无法插入连接表,外键约束仍然失败

Mysql:如何仅在列(已接受)= 1 时选择?

MySQL 不使用主键删除重复项

python - Django:快速检索 manyToMany 字段的 ID