2013-02-04 46 views
1

如何從一個數據庫表中將選擇語句的結果插入到另一個數據庫表中 - 使用C#?在C#中將SQL查詢的結果插入到另一個數據庫中

問題是我需要在C#代碼中使用2個不同的連接字符串。 這是我迄今爲止但是,這不是工作..

 string sCMD_All = "SELECT * FROM table"; 
     SqlDataAdapter da = new SqlDataAdapter(); 
     DataSet ds = new DataSet(); 

     using (SqlConnection myConn = new SqlConnection(ConnectionString)) 
     { 
      using (SqlCommand myCommand = new SqlCommand(sCMD_All, myConn)) 
      { 
       myConn.Open(); 
       SqlDataReader reader = myCommand.ExecuteReader(); 
       da.Fill(ds); 
       myConn.Close(); 
      } 
     } 
     DataTable sqTable = ds.Tables[0]; 

     //insert into server database 
     DataTable newTable = new DataTable(); 
     newTable = sqTable; 
     using (SqlConnection myConn = new SqlConnection(ConnectionString_M)) 
     { 
      string sCMD_I = "INSERT INTO tableNew @newTable"; 

      using (SqlCommand myCommand = new SqlCommand(sCMD_I, myConn)) 
      { 
       myConn.Open(); 
       SqlDataReader reader = myCommand.ExecuteReader(); 
       myConn.Close(); 
      } 
     } 

的問題是我需要在C#代碼中使用2個不同的連接字符串。這是我迄今爲止但是,這不是工作..

string sCMD_All = "SELECT * FROM table"; 
    SqlDataAdapter da = new SqlDataAdapter(); 
    DataSet ds = new DataSet(); 

    using (SqlConnection myConn = new SqlConnection(ConnectionString)) 
    { 
     using (SqlCommand myCommand = new SqlCommand(sCMD_All, myConn)) 
     { 
      myConn.Open(); 
      SqlDataReader reader = myCommand.ExecuteReader(); 
      da.Fill(ds); 
      myConn.Close(); 
     } 
    } 
    DataTable sqTable = ds.Tables[0]; 

    //insert into server database 
    DataTable newTable = new DataTable(); 
    newTable = sqTable; 
    using (SqlConnection myConn = new SqlConnection(ConnectionString_M)) 
    { 
     string sCMD_I = "INSERT INTO tableNew @newTable"; 

     using (SqlCommand myCommand = new SqlCommand(sCMD_I, myConn)) 
     { 
      myConn.Open(); 
      SqlDataReader reader = myCommand.ExecuteReader(); 
      myConn.Close(); 
+0

您使用的是什麼SQL API? –

回答

4

使用SELECT ... INTO ...有一個完全合格的表名database.schema.object_name,像這樣:

USE DatabaseName; 

SELECT * 
FROM DatabaseName.schemaname.Tablename 
INSERT INTO AnotherDatabase.schemaname.AnotherTablename; 

然後你可以使用ADO.net或其它API來從C#執行此查詢。

1
SqlCommand Data = new SqlCommand("Select * FROM " + DBTableName + " WHERE " + DBColName + " = " + ColumnId + ";", this.con); 
SqlDataAdapter SqAdptr = new SqlDataAdapter(Data); 
DataSet SqDataset = new DataSet(); 
SqAdptr.Fill(SqDataset); 
DataTable sqTable = SqDataset.Tables[0]; 

轉讓此表新的DataTable

DataTable NewTable = new DataTable(); 
NewTable = sqlTable; 
0
INSERT INTO [INSERTDATABASE].[dbo].[INSERTTABLE] 
SELECT * FROM [CURRENTDATABASE].[dbo].[CURRENTTABLE] 
0

如果你不能/不想使用鏈接的服務器,你得到了DataTable對象,因爲權限或性能,之後,你可以調用以下函數將數據插入位於不同服務器中的第二個數據庫。這個對我有用。

CopyDataFromOneToOther(DB2, myDataTable, "tableName"); 


private static void CopyDataFromOneToOther(String sConnStr, DataTable dt, String sTableName) 
{ 
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sConnStr, SqlBulkCopyOptions.TableLock)) { 
    bulkCopy.DestinationTableName = sTableName; 
    bulkCopy.WriteToServer(dt); 
    }      
} 
相關問題