[英]Inserting result of a SQL query from one database to another in C#
如何使用C#從一個數據庫表中獲取select語句的結果並將其插入到另一個數據庫表中?
問題是我需要在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();
將SELECT ... INTO ...
與完全限定的表名database.schema.object_name
,如下所示:
USE DatabaseName;
SELECT *
FROM DatabaseName.schemaname.Tablename
INSERT INTO AnotherDatabase.schemaname.AnotherTablename;
然后,您可以使用ADO.net或其他API從C#執行此查詢。
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 NewTable = new DataTable();
NewTable = sqlTable;
INSERT INTO [INSERTDATABASE].[dbo].[INSERTTABLE]
SELECT * FROM [CURRENTDATABASE].[dbo].[CURRENTTABLE]
如果由於權限或性能而不能/不想使用Linked Server,則在獲得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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.