Существует таблица базы данных SQL Server, которая является исходной, и база данных Postgres в качестве целевой таблицы.Есть ли эффективный подход с использованием C # для сохранения тех же данных на стороне таблицы postgres, отражающей таблицу сервера SQL?
То, что я до сих пор пробовал, это использовать System.Data
и Npgsql
.Моя идея состояла в том, чтобы каждый раз удалять данные из целевой таблицы и собирать все данные из исходной таблицы.Есть хороший SqlBulkCopy
, но исходящий из System.Data
, я не вижу того же в Npgsql
.Может ли кто-нибудь помочь мне с этим?
private static void PerformBulkCopy()
{
string SourcedestconnectionString = @"";
string TarettargconnectionString = @"";
// get the source data
using (SqlConnection sourceConnection = new SqlConnection(SourcedestconnectionString))
{
SqlCommand myCommand = new SqlCommand("SELECT * FROM [pub].[vw_Services_NDPEWork]", sourceConnection);
sourceConnection.Open();
SqlDataReader reader = myCommand.ExecuteReader();
// open the destination data
using (NpgsqlConnection destinationConnection = new NpgsqlConnection(TarettargconnectionString))
{
// open the connection
destinationConnection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection.ConnectionString))
{
bulkCopy.BatchSize = 500;
bulkCopy.NotifyAfter = 1000;
bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(Target);
bulkCopy.DestinationTableName = "roberttest";
bulkCopy.WriteToServer(reader);
}
}
reader.Close();
}
}