2015-12-01 34 views
1

我想将数据记录从数据库中的一个表复制到另一个数据库中的另一个表。如何在不同数据库中将表记录从一个表复制到另一个表

我对源和目标连接使用两个不同的连接字符串。

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中的表记录插​​入另一个数据库中的表中。

此致敬礼。

回答

0

你有INSERT不正确,您已指定其预计排构造VALUES子句,要指定您的表:

SQL = "INSERT INTO [EmployeeLocal] ([EmpID],[EmpName], [Salary]) "; 
    SQL += "Select [EmpID],[EmpName], [Salary] from [DT]"; 
    dbCommLocal.ExecuteCommand(SQL); 

UPDATE:

的问题是,SQL变量已通过T-SQL语句作为语句而不是传递你的表DT。 SQL Server期望数据库中的一个名为DT的表。

退房:Insert entire DataTable into database at once instead of row by row?

+0

但我有表格数据存储在DT! – user2995689

+0

对不起, DT不是一个SQL表,这是INSERT语句所期望的。 DT是.NET应用程序中的一个DataTable,因此您需要使用.NET来传递数据 - 请检查我的答案中的更新以获取到另一个stackoverflow帖子的链接。 –

0

在你的第二份声明,您从表DT插入,但只有DT在C#代码存在,它不会在你的SQL数据库,这就是为什么它deosn't工作存在的。

您将需要逐行浏览您的c#表dt,并为每行运行插入语句。 这下面只是伪代码 - 你应该真的使用参数化查询。但是,我不知道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); 
} 
相关问题