2009-09-02 5 views
14

Я огляделся и не мог найти ничего, что могло бы ответить на этот конкретный вопрос.Перенос данных с MS SQL на PostgreSQL?

Каков самый простой способ перемещения данных из базы данных MS SQL Server 2005 в установку Postgres (8.x)?

Я рассмотрел несколько утилит, таких как «Full Convert Enterprise» и т. Д., И все они не работают по той или иной причине, начиная от странных ошибок, которые заставляют его взорвать до вставки нулей, а не фактических данных (wth?). ,

Я смотрю на БД со всей таблицей для одного вида, за исключением, не сохраненные прок, функции и т.д.

На данный момент я собираюсь написать небольшую утилиту, чтобы сделать это для меня, Я просто не могу поверить, что это необходимо. Наверняка есть что-то где-нибудь, что можно сделать? Я даже не слишком беспокоюсь о стоимости, хотя свободен предпочтительнее :)

ответ

6

Посмотрите на Software Catalogue. Под Administration/development tools Я вижу DBConvert for MS SQL & PostgreSQL. Возможно, есть и другие аналогичные инструменты.

+1

отлично, это именно то, что я искал. Я взял его на тест-драйв, мне понравилось, поэтому я купил полную версию и работает как чемпион. Для тех, кто не ищет это решение, но аналогичные решения, они предлагают инструменты для преобразования и синхронизации между MSSQL, Postgres, Oracle, MS Access, Firebird и т. Д. Я могу говорить только о конверсиях MSSQL/Postgres, но если эти преобразования являются показателями, этот программный пакет стоит 79 долларов США. – Fred

+0

@Milen A. Radev, +1 Отлично! – Meem

-1

Ну, есть привязки .NET для MS SQL Server 2005 (очевидно), а также для PostgreSQL. Поэтому для кодирования программы, которая могла бы безопасно переносить данные из одного в другой, потребовалось бы всего несколько строк кода. Представление, вероятно, должно быть выполнено вручную, поскольку Postgres не использует тот же язык для представлений, что и SQL Server.

+0

Да, но это потребует много технического обслуживания, чтобы идти в ногу со временем, я бы предпочел что-то, что не требовало, чтобы я погружался в код каждый раз при изменении схемы БД. , и если я делаю это родовым, тогда это становится не так просто, как сейчас мне приходится принимать решения на основе типов данных и т. Д. – Fred

+0

Ну, я не думаю, что будет простой маршрут. См. Здесь http://wiki.postgresql.org/wiki/Microsoft_SQL_Server_to_PostgreSQL_Migration_by_Ian_Harding для некоторых из затронутых проблем. Скорее всего, вы сможете кодировать что-то, что работает в вашей ситуации, чем то, что кто-то сможет создать инструмент, который работает для всех. –

4

Вы можете использовать функциональность MS DTS (переименованную в SSIS в последней версии, я думаю). Одна из проблем с DTS заключается в том, что я не смог заставить ее совершить фиксацию после каждой строки при загрузке данных в pg. Это нормально, если у вас есть только пара из 100 тыс. Строк или около того, но это очень медленно.

Обычно я пишу небольшой скрипт, который выгружает данные из SQLServer в формате CSV, а затем использует COPY WITH CSV на стороне PostgreSQL.

Оба эти только заботятся о данных. Уход за схемой немного сложнее, так как типы данных не обязательно отображаются прямо. Но его можно легко создать вместе со статической нагрузкой схемы. Если схема проста (например, varchar/int datatypes), эта часть также может быть легко списана с данными в INFORMATION_SCHEMA.

Смежные вопросы