2015-12-01 36 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); 
} 
相關問題