gpt4 book ai didi

java - 使用Java将数据从一个数据库导入到另一个数据库的最快方法

转载 作者:行者123 更新时间:2023-11-29 00:06:04 25 4
gpt4 key购买 nike

数据库管理系统 - mysql

语言 - Java

我有两个数据库

数据库一 - 我只有 SELECT 访问权限。

数据库二 - 完全访问。

确切要求:-

我必须将许多表从数据库一导入到数据库二。

当前解决方案:-

  1. 我正在从表中选择所有行并将结果存储在 ResultSet 中。

    String sql = "SELECT * FROM " + tableName +" ;";
    Result Set res = runSql(sql);
  2. 将结果集中的每一行写入 CSV 文件。

    OutputStreamWriter writer = null;
    writer = new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8");

    while (res.next() ){
    for (int j = 1; j <= noOfColumns.size(); j++) {
    if(j != 1)
    writer.append(",");
    writer.append("\""+res.getString(j)+"\"");
    }

    writer.append("\n");
    }
  3. 使用 LOAD DATA INFILE 从 CSV 文件填充数据库二。

    String sql = "LOAD DATA LOCAL INFILE '"+fileName+"' INTO TABLE "+tableName+ " CHARACTER SET UTF8 "+"     COLUMNS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY \"\n\";";
    return runSql(sql);
  4. 对所有表重复此过程。

我的问题:-

有些表有超过数百万行,我可以做得更好吗?我发现大部分时间都用在了第 2 步(ResultSet 到 CSV 的写入)。

最佳答案

眼前的问题是您应该使用 BufferedWriter, 但更重要的是您应该使用 SELECT ... INTO OUTFILE 在服务器上创建文件,而不是通过遍历 ResultSet 或从客户端文件加载。

事实上为什么是 Java?最快的方法是根本不使用 Java,而是使用 MySQL Workbench、HeidiSQL 等,并且只导入一个 SQL 转储。

关于java - 使用Java将数据从一个数据库导入到另一个数据库的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27409922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com