Как экспортировать базу данных SQL Server в MySQL?

Я пытаюсь преобразовать из файла резервной копии базы данных SQL Server (.bak) в MySQL. Этот вопрос и ответы были очень полезны, и я успешно импортировал базу данных, но теперь я застрял в экспорте в MySQL.

Был предложен набор инструментов миграции MySQL, но, похоже, он был заменен MySQL Workbench. Можно ли использовать MySQL Workbench для миграции с SQL Server так же, как сработал инструмент миграции?

Или набор инструментов миграции все еще доступен где-нибудь?

Ответ 1

Вы можете использовать MySQL Workbench, который обеспечивает возможность быстрой миграции данных и приложений из Microsoft SQL Server в MySQL с меньшим количеством времени и усилий.

В этом инструменте есть много интересных функций, таких как:

  • Переносы базы данных - включает миграции из Microsoft SQL Server, Sybase ASE и PostgreSQL.
  • Управление проектами миграции - позволяет настраивать, копировать, редактировать, выполнять и планировать миграции.

Подробнее http://www.mysql.com/products/workbench/migrate/

Ответ 2

Я использую sqlyog для переноса из mssql в mysql. Я попробовал Инструмент миграции и верстак, но ему понравился sqlyog для SJA. Я мог бы запланировать процесс импорта и мог делать инкрементный импорт с помощью предложения WHERE.

enter image description here

Ответ 3

PhpMyAdmin имеет мастер импорта, который позволяет импортировать также тип файла MSSQL.

См. http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html для типов поддерживаемых им сценариев БД.

Ответ 4

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

Мой метод в этих случаях - использовать служебную программу командной строки BCP для экспорта данных с SQL-сервера, а затем использовать команду LOAD DATA INFILE.. INTO TABLE в MySQL для чтения файла данных. BCP является одним из самые старые утилиты командной строки SQL Server (начиная с рождения SQL Server - v6.5), но он по-прежнему остается одним из самых простых и надежных способов получения данных.

Чтобы использовать этот метод, вам нужно создать каждую таблицу назначения с той же или эквивалентной схемой в MySQL. Я делаю это, щелкнув правой кнопкой мыши базу данных в SQL-менеджере предприятия, затем Tasks- > Generate Scripts... и создав SQL script для всех таблиц. Затем вы должны преобразовать script в MySQL совместимый SQL вручную (определенно, самую худшую часть задания) и, наконец, запустить команды CREATE TABLE в базе данных MySQL, чтобы у вас были сопоставленные таблицы с версиями SQL Server по столбцам, пустыми и готов к данным.

Затем экспортируйте данные со стороны MS-SQL следующим образом.

bcp DatabaseName..TableName out TableName.dat -q -c -T -S ServerName -r \0 -t !\t!

(Если вы используете SQL Server Express, используйте значение -S так: -S "ComputerName\SQLExpress" )

Это создаст файл с именем TableName.dat с полями, разделенными на! [tab]! и строки, ограниченные символами \0 NUL.

Теперь скопируйте файлы .dat в /tmp на сервере MySQL и загрузите на стороне MySQL так:

LOAD DATA INFILE '/tmp/TableName.dat' INTO TABLE TableName FIELDS TERMINATED BY '!\t!' LINES TERMINATED BY '\0';

Не забывайте, что таблицы (TableName в этом примере) должны быть созданы уже на стороне MySQL.

Эта процедура очень болезненно ручна, когда дело доходит до преобразования схемы SQL, но она работает даже для самых сложных данных, и поскольку она использует плоские файлы, вам никогда не нужно убеждать SQL Server говорить с MySQL или наоборот.

Ответ 5

Вы можете сделать это легко, используя Инструмент загрузки данных. Я уже делал это, прежде чем использовать этот инструмент и нашел его хорошим.

Ответ 6

если у вас есть MSSQL-совместимый SQL-дамп, вы можете конвертировать его в MySQL-запросы один за другим с помощью этого онлайн-инструмента

http://burrist.com/mstomy.php

Надеюсь, что это спасло ваше время.

Ответ 7

Похоже, вы исправите: Инструмент Migration Toolkit должен быть интегрирован с MySQL Workbench, но я не думаю, что это еще не завершено. Смотрите объявление об окончании срока службы для инструментов GUI MySQL (в том числе набор средств миграции):

http://www.mysql.com/support/eol-notice.html

MySQL поддерживает архивы пакетов инструментов GUI MySQL:

http://dev.mysql.com/downloads/gui-tools/5.0.html

Ответ 8

Я использовал приведенную ниже строку подключения на вкладке "Дополнительно" в наборе инструментов миграции MySQL для подключения к экземпляру SQL Server 2008:

jdbc:jtds:sqlserver://"sql_server_ip_address":1433/<db_name>;Instance=<sqlserver_instanceName>;user=sa;password=PASSWORD;namedPipe=true;charset=utf-8;domain= 

Обычно параметр имеет "systemName\instanceName". Но в вышесказанном не добавляйте "systemName" (используйте только имя экземпляра).

Чтобы проверить, что такое instanceName, перейдите в services.msc и проверьте DisplayName экземпляра MSSQL. Он похож на MSSQL $instanceName.

Надеемся на эту помощь в MSSQL-подключении из инструментария миграции mysql.

Ответ 11

У меня были некоторые данные, которые я должен был получить от mssql в mysql, с трудом находили решение. Итак, что я сделал в конце (немного длинный путь, чтобы сделать это, но в крайнем случае он работает):

  • Откройте базу данных mssql в SQL Server Express Express Express (я использовал 2005)
  • Откройте каждую таблицу поочередно и
  • Нажмите верхний левый угол, чтобы выбрать всю таблицу:

  • Скопировать данные в буфер обмена (ctrl + v)

  • Открыть ms excel
  • Вставить данные из буфера обмена
  • Сохранить файл excel как .csv
  • Повторите приведенное выше для каждой таблицы
  • Теперь вы можете импортировать данные в mysql

Надеюсь, что это поможет