powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Копирование таблицы из одной СУБД в другую
16 сообщений из 16, страница 1 из 1
Копирование таблицы из одной СУБД в другую
    #40112521
warren82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Копирую таблицу из SQL Server в PostgreSQL порциями в несколько потоков, C+SQL. Каждый поток выполняет в цикле получение границ новой порции и копирование данных порции в таблицу-приемник.
Данные в таблице-источнике модифицируются в процессе, заблокировать таблицу нельзя.
Не устраивает производительность этого процесса, но другой алгоритм придумать пока не получается.
Как бы вы это делали?
Возможно, есть литература/статьи в тему?
Открытые реализации, в которых можно подсмотреть?
Возможно, есть какие-то встроенные в СУБД средства?
Любая информация может помочь.
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112525
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
warren82, как именно вы производите копирование?
Имеется ввиду чтение с постгресса и вставку на MSSQLSERVER?
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112526
Агрох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS SQL поддерживает подключение к базам PostgreSQL. Так и ищем: "Подключение к источнику данных PostgreSQL" в документации к SQL Server.
Так же есть интеграционные средства, например, сходу нашёл на хабре описание настройки TDS FDW.
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112540
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warren82
Добрый день!
Копирую таблицу из SQL Server в PostgreSQL порциями в несколько потоков, C+SQL. Каждый поток выполняет в цикле получение границ новой порции и копирование данных порции в таблицу-приемник.
Данные в таблице-источнике модифицируются в процессе, заблокировать таблицу нельзя.


посмотрите ответ
https://www.sqlservercentral.com/forums/topic/replicating-data-from-ms-sql-server-2012-to-postgresql

судя по описанию ваших данных (обновление данных, добавление новых) я бы попробовал репликацию.

какой размер таблицы-источника?
какая частота обновления требуется на приемнике?
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112555
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warren82,

"копирование данных порции в таблицу-приемник" смысла нет делать в несколько потоков, так как вставка выполняется в один поток.
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112574
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
warren82
Добрый день!
Копирую таблицу из SQL Server в PostgreSQL порциями в несколько потоков, C+SQL. Каждый поток выполняет в цикле получение границ новой порции и копирование данных порции в таблицу-приемник.
Данные в таблице-источнике модифицируются в процессе, заблокировать таблицу нельзя.
Не устраивает производительность этого процесса, но другой алгоритм придумать пока не получается.
Как бы вы это делали?
Возможно, есть литература/статьи в тему?
Открытые реализации, в которых можно подсмотреть?
Возможно, есть какие-то встроенные в СУБД средства?
Любая информация может помочь.

Начните с того, что определите какая часть вашей "качайки" тормозит. Если запросы к таблице в SQL Server, то описывайте DDL+DML в посте - местное население подскажет что править: руки, гены или код. Если тормоза на вставке в PostgreSQL, то, наверное, имеет смысл обратиться в соответствующий раздел форума
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112594
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
warren82,

"копирование данных порции в таблицу-приемник" смысла нет делать в несколько потоков, так как вставка выполняется в один поток.

Да щас, конечно.
С чего вы взяли, что у них вставка в таблицу с автоинкрементным ключом, на котором OPTIMIZE_FOR_SEQUENTIAL_KEY off?
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112617
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster,

с чего Вы взяли, что постгресс вставляет в несколько потоков?
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112618
warren82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster,
Наоборот, чтение с SQL Server, запись в PostgreSQL, но не суть.
Данные получаю через SELECT, вставляю через COPY.
Или вы про интерфесы, через которые работаю с СУБД?
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112619
warren82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Агрох,

Спасибо, попробую порыться в исходниках.
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112624
warren82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

У меня задача ускорить копирование первоначальных данных, а не изменений. Не нашел, как в CDC сделать первоначальный снимок таблицы, который можно перетащить на другую СУБД?
Таблица может быть большая (миллиарды записей).
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112630
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
uaggster,

с чего Вы взяли, что постгресс вставляет в несколько потоков?

А, пардон. Думал, что он читает с постргресса, и вставляет на MSSQLSERVER.
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112631
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warren82,

если не постгрессе нет секционирования, то придется сделать загрузку в несколько таблиц при параллельном выполнении.
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112637
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
warren82,
для быстрой заливки данных рсубд в принципе везде одинаковые рекомендации - на получателе выпилить все ключи, ограничения, индексы, триггеры. если есть возможность включить опцию типа delayed durability в SQL Server (в pg такое есть. это развлечения со стороны одминов)
в copy для pg вроде была опция загрузки данных из бинарного вида. обещали что мол быстрее,чем текст. правда бинарный вид - отдельная история, как отдельная история и то, что он запросто может поменяться в следующей версии.
были в pg еще какие-то средства оффлайн-загрузки данных, но хз подойдут тут или нет
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112640
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warren82
Агрох,

Спасибо, попробую порыться в исходниках.


В "исходниках" чего вы собрались "порыться"?
...
Рейтинг: 0 / 0
Копирование таблицы из одной СУБД в другую
    #40112644
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warren82
komrad,

У меня задача ускорить копирование первоначальных данных, а не изменений . Не нашел, как в CDC сделать первоначальный снимок таблицы, который можно перетащить на другую СУБД?
Таблица может быть большая (миллиарды записей).


т.е. предположим вы умеете копироваь первоначальные данные, а изменения вас не колебают?

Я когда-то делал приблизительно так:
рабочая таблица, в ней флажки, приложение читает от флажка до флажка порцию и пишет куда-то, при изменении (вставке, апдейте, удалении) флажки изменяются, все работает через брокер. Переносимые данные должны быть "идемпотентны".
Да, предположим, пьяный администратор рестартонул сервер, вырубилось электричество и т.д., все должно продолжить работать.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Копирование таблицы из одной СУБД в другую
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]