2009-10-22 2 views
8

Я делаю некоторые исследования по переносу от сервера SQL Server к postgresql и ищу лучшие инструменты для выполнения этой работы.SQL Server to Postgres

В частности, для поиска инструмента, подобного MySQL Migration Toolkit, я выполнил тестовую миграцию наших баз данных в MySQL и каждый из них проходил через час.

Похоже, что pgAdmin выполнит большую часть работы с Sql Server Management Studio, а таблицы pg_stat будут достаточно хороши для настройки производительности.

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

+1

Поздравляю вас с тем, что вы решили отойти от блокировщика поставщика умиротворения. – LiraNuna

+3

Больше, чем мы можем, уйти от огромных лицензионных сборов. – Lance

ответ

3

В мигрирующие из PostgreSQL одной версии на другую, которая не имела никаких инструментов для этого я использовал только один инструмент, Unix-х СЭД.

Моя рекомендация - просто экспортировать sql. Очистите специфические экспатрианты экспортного клиента (обычно в комментариях), затем попробуйте импортировать его в базу данных sql и посмотреть, что произойдет. Ошибки - ваши рекомендации. Используйте sed, чтобы пройти через файл mssql и вывести SQL-файл postgres, исправляющий ошибки. Когда вы находитесь в функциональной среде, посмотрите на сами данные, некоторые вещи могут отличаться от ожидаемых. После тестирования и дальнейшей коррекции вам будет хорошо.

+0

это будет немного болезненно на таблицах с миллионами записей, но выполнимо, я могу просто написать небольшой скрипт для подключения к обеим базам данных и перемещения данных. – Lance

+0

Это может работать плавно. Количество исправлений, которые вы имеете на Sed, не так уж много. Линии трудно обрабатывать иногда как регулярные выражения. Но вы по сути решаете один ТИП проблемы за раз, а не каждую отдельную проблему один на один. Хотелось бы, чтобы у меня был написан сценарий, который я бы опубликовал в качестве примера. Если вы являетесь регрессором guru tho, это довольно легко. Удачи :) – 2009-10-28 23:58:53

2

Я согласен с Chisum. Я бы экспортировал данные из MSSQL в виде SQL-скрипта (или подмножества, если он огромный - возможно, одна таблица за раз или меньше); и попробуйте запустить его против postgres; и посмотреть, что произойдет. Возможно, вам придется написать sed или небольшой скрипт perl, если есть какие-либо gnarlies, чтобы заставить его работать правильно, но я не ожидал бы, что это будет смешно.

Импортируйте данные в postgres и посмотрите, что произойдет. Вероятно, вы столкнетесь с большим количеством проблем со структурой таблицы, индексами и ссылками, чем с другими.

Theres некоторую информацию на сайте Postgres здесь: http://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#Microsoft_SQL_Server

0

Это зависит от того, что именно вам нужно конвертировать из SQL Server в PostgreSQL. Если вы говорите только о процессе DDL и преобразовании данных, попробуйте экспортировать все с помощью SQL Server Management Studio, как предлагается, попробуйте запустить этот скрипт в базе данных PostgreSQL с помощью утилиты PGAdmin или psql и попробуйте исправить ошибки, вызванные во время Импортировать. Но учтите, что даже в этом случае могут возникнуть проблемы с преобразованием RESERVED WORDS, преобразованием IDENTITY, преобразованием вычисленных столбцов, многоязычным преобразованием данных, преобразованием кластерных индексов и другими. Не уверен, что REGEXP поможет вам в решении проблем, связанных с этим преобразованием функций.

Если вы говорите о преобразовании объектов бизнес-логики, таких как триггеры, SP, UDF, тогда в общем процессе преобразования будет много проблем даже при использовании существующих бесплатных утилит, выполняющих миграцию SQL Server на PostgreSQL поскольку синтаксис и методы для указания и поддержки той или иной операции в обеих базах данных действительно различны.Даже если вы являетесь настоящим GURU в REGEXP в таком случае, будет очень сложно автоматизировать изменение кода или повторное факторинг кода в поддержку специфики исходной базы данных. Наиболее распространенными функциями являются: встроенные функции, иерархические запросы, обработка ошибок, обработка транзакций, возврат и обработка наборов результатов, преобразование триггеров динамических SQL и многие другие.

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

0

Liquibase может помочь вам в преобразовании схемы из MS SQL в специфичную для PostgreSQL схему (требуется небольшое вмешательство вручную, но весьма полезно) Для переноса данных вы можете экспортировать SQL Server в csv и импортировать его в postgresql.