在两个不同的mysql数据库中的两个表之间复制大量行

本文关键字:两个 复制 之间 数据库 mysql | 更新日期: 2023-09-27 18:26:07

我有一个数据库,我们称它为Database A,另一个在MySQL中称为Database B

我有一个SQL语句,它从数据库A(大约100万行)中提取数据,并需要将它们插入数据库B。

为了从数据库A中读取数据,我使用了包含100万行的MySqlDataReader。我现在想把它们写进数据库B.

我尝试做的是遍历数据读取器中的每一行,并使用简单的INSERT存储过程写入数据库。然而,这花费的时间太长了。

我用C#研究了sql大容量数据副本,但我不想使用外部文件。

我有什么选择?

在两个不同的mysql数据库中的两个表之间复制大量行

类似的简单查询

 INSERT INTO mysqldb1.table1 SELECT * from mysqldb2.table2

这一切都是由MySql引擎直接执行的,避免了任何来自MySql和代码的数据传输

string cmdText = "INSERT INTO mysqldb1.table1 SELECT * from mysqldb2.table2";
using(MySqlConnection cnn = new MySqlConnection(.....))
using(MySqlCommand cmd = new MySqlCommand(cmdText, cnn))
{
    cnn.Open();
    int rows = cmd.ExecuteNonQuery();        
    Console.WriteLine(rows);
}

在更复杂的场景中(例如,您需要重复操作,而目标表最初不存在),您可以编写这样的查询

string cmdText = @"DROP TABLE IF EXISTS mysqldb1.table1;
                   CREATE TABLE mysqldb1.table1 LIKE mysqldb2.table2;
                   INSERT INTO mysqldb1.table1 SELECT * from mysqldb2.table2";
using(MySqlConnection cnn = new MySqlConnection(.....))
using(MySqlCommand cmd = new MySqlCommand(cmdText, cnn))
{
    ......
}