在两个不同的mysql数据库中的两个表之间复制大量行
本文关键字:两个 复制 之间 数据库 mysql | 更新日期: 2023-09-27 18:26:07
我有一个数据库,我们称它为Database A
,另一个在MySQL中称为Database B
。
我有一个SQL语句,它从数据库A(大约100万行)中提取数据,并需要将它们插入数据库B。
为了从数据库A中读取数据,我使用了包含100万行的MySqlDataReader
。我现在想把它们写进数据库B.
我尝试做的是遍历数据读取器中的每一行,并使用简单的INSERT存储过程写入数据库。然而,这花费的时间太长了。
我用C#研究了sql大容量数据副本,但我不想使用外部文件。
我有什么选择?
类似的简单查询
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))
{
......
}