2008-09-17 2 views
2

Есть ли заклинание mysqldump или аналогичный инструмент, который создаст кусок кода SQL2003 для создания и заполнения тех же баз данных в произвольной SQL-совместимой RDBMS?Перенос из MySQL на произвольный сервер SQL2003, совместимый со стандартами

(Тот, который я пытаюсь прямо сейчас MonetDB)

ответ

3

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

С другой стороны, операторы DML довольно переносимы. Поэтому я предлагаю:

  • дамп базы данных без каких-либо данных (туздЫшпр --no-данные), чтобы получить схему
  • внести необходимые изменения, чтобы получить схему, загруженную в другой БД - это нужно сделать, (но может быть возможен поиск или замена)
  • Дамп данных с расширенными вставками и без создания таблицы (--extended-insert = 0 --no-create-info)
  • Запустите полученный скрипт с другой БД.

Это должно делать то, что вы хотите.

Однако при переносе приложения на другого поставщика базы данных потребуется много другого; перемещение схемы и данных - это легкий бит. Проверка на наличие ошибок, различное поведение и тестирование производительности - это жесткий бит.

По крайней мере, проверяйте каждый запрос в своем приложении на действительность в новой базе данных. В идеале сделать намного больше.

0

С SQL Server 2000 или 2005 вы можете иметь его создавать сценарии для ваших объектов, но я не уверен, насколько хорошо они будут передавать на другую СУБД.

0

Сценарий генерации сценария, вероятно, самый простой способ. Конечно, вам придется выполнять поиск/замену на нескольких типах данных.

1

Этот вид жесткой. Если у вас нет очень простой структуры базы данных с ванильными типами (varchar, integer и т. Д.), Вы, вероятно, получите наилучшие результаты, пишущие инструмент миграции. На языке Perl (через DBI) это довольно прямолинейно. Программа в основном представляет собой цикл эха, который читает из одной базы данных и вставляет в другую. Есть примеры такого кода, о котором знает Google.

Помимо очевидной проблемы перемещения данных является более тонкой проблемой того, как представлены некоторые типы данных. Например, поле datetime MS SQL не совпадает с форматом MySQL. Другие типы данных, такие как BLOB, могут иметь разную емкость в одном RDBM, чем в другом. Вы должны убедиться, что вы хорошо разбираетесь в определениях типа данных целевой системы БД перед переносом.

Последняя проблема, конечно же, заключается в том, что инструкции SQL на уровне приложений работают против новой системы. В моей работе это самая сложная часть. Математика даты кажется особенно специфичной для БД, в то время как раздражающие вещи, такие как правила цитирования, являются постоянным источником раздражения.

Удачи вам в вашем проекте.

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