在 C# 中将 SQL 查询的结果从一个数据库插入到另一个数据库
本文关键字:数据库 一个 插入 另一个 SQL 中将 查询 结果 | 更新日期: 2023-09-27 17:57:16
如何使用 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]
如果由于权限或性能而不能/不想使用链接服务器,则在获得 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);
}
}