如何在不同的数据库中将表记录从一个表复制到另一个表
本文关键字:一个 另一个 复制 记录 数据库 | 更新日期: 2023-09-27 18:25:14
我想将数据记录从数据库中的一个表复制到另一个数据库中的另一个表。
对于源连接和目标连接,我使用了两个不同的连接字符串。
SQL = "Select * from Employee";
DT = dbCommServer.GetDataTable(SQL); // DT stores records from one Table.
// Query to insert Records from Source Table to destination Table in different Database.
SQL = "INSERT INTO [EmployeeLocal] ( [EmpID],[EmpName], [Salary]) ";
SQL += "VALUES ('Select [EmpID],[EmpName], [Salary] from [DT]')";
dbCommLocal.ExecuteCommand(SQL);
此代码不会在目标表中插入任何记录。
请建议任何合适的方法将存储在DT
中的表记录插入到不同数据库中的另一个表中。
致以最良好的问候。
在第二条语句中,从表DT插入,但DT只存在于c#代码中,而不存在于sql数据库中,这就是为什么它不起作用。
您需要逐行遍历c#表dt,并为每一行运行一个insert语句。下面这只是伪代码——您应该真正使用参数化查询。然而,我不知道dbCommLocal是什么,以及如何使用它的参数
foreach ( DataRow row in DT )
{
// first create the insert statement with parameters:
SQL="INSERT INTO [EmployeeLocal] ( [EmpID],[EmpName], [Salary]) ";
SQL += "VALUES (" + Row.Item["EmpID"] + ",'" +
+ Row.Item["EmpName"] + "'," +
+ Row.Item["Salary"] + ");"
// Then run it
dbCommLocal.ExecuteCommand(SQL);
}
如果INSERT不正确,指定了一个需要行构造函数的VALUES子句,则需要指定表:
SQL = "INSERT INTO [EmployeeLocal] ( [EmpID],[EmpName], [Salary]) ";
SQL += "Select [EmpID],[EmpName], [Salary] from [DT]";
dbCommLocal.ExecuteCommand(SQL);
更新:
问题是SQL变量已将T-SQL语句作为一个语句传递,而不是将表DT向上传递。SQL Server期望数据库中有一个名为DT的表。
签出:是否立即将整个DataTable插入数据库,而不是逐行插入?