Синхронизировать таблицу SQL Server и таблицу Postgres - PullRequest
1 голос
/ 10 июля 2019

Существует таблица базы данных 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();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...