我正在将一些数据从一个sql数据库复制到另一个SQLServer中的另一个SQL数据库。效果很好,我需要检查是否已经存在某些数据,然后再将其复制。我该怎么做?一些建议?
string Source = ConfigurationManager.ConnectionStrings["Db1"].ConnectionString;
string Destination = ConfigurationManager.ConnectionStrings["Db2"].ConnectionString;
using (SqlConnection sourceCon = new SqlConnection(Source))
{
SqlCommand cmd = new SqlCommand("SELECT [Id],[Client] FROM [Db1].[dbo].[Client]", sourceCon);
sourceCon.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
using (SqlConnection destCon = new SqlConnection(Destination))
{
using (SqlBulkCopy bc = new SqlBulkCopy(destCon))
{
bc.DestinationTableName = "Clients";
bc.ColumnMappings.Add("Id", "ClientId");
bc.ColumnMappings.Add("Client", "Client");
destCon.Open();
bc.WriteToServer(rdr);
}
}
}
}
SELECT COUNT(1)
FROM table_name
WHERE unique_key = value;
结果应为0或1
将其复制到目标位置的临时表中,然后使用合并或插入联接仅将一些数据从临时表插入到实际表中
INSERT INTO real
SELECT * FROM
temp
LEFT JOIN real ON real.ID = temp.ID
WHERE
real.ID IS NULL
要做的一种方法是将副本批量复制到staging表(具有相似布局的另一个表),然后从该临时表执行有条件的插入到实际表中。” >
您还可以使用表值参数代替SqlBulkCopy
来执行类似的操作,并将表值参数视为登台表。