У меня есть файл .sql из дампа MySQL, содержащий таблицы, определения и данные, которые необходимо вставить в эти таблицы. Как преобразовать эту базу данных, представленную в файле дампа, в базу данных MS SQL Server?
Импорт базы данных MySQL в MS SQL Server
Ответ 1
Я нашел способ для этого в сети
Это требует немного работы, потому что это нужно делать за столом. Но в любом случае я мог бы скопировать таблицы, данные и ограничения в базу данных MS SQL.
Вот ссылка
http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx
Ответ 2
Использовать SQL Server Migration Assistant (SSMA)
В дополнение к MySQL он поддерживает Oracle, Sybase и MS Access.
Кажется, он достаточно умен и способен справляться даже с нетривиальными переносами. Он также получил некоторый интерфейс командной строки (в дополнение к GUI), поэтому теоретически он может быть интегрирован в некоторый процесс пакетной загрузки.
Это текущая ссылка для загрузки версии MySQL https://www.microsoft.com/en-us/download/details.aspx?id=54257.
Текущая (июнь 2016 г.) стабильная версия 6.0.1 аварийно завершает работу с текущим (5.3.6) драйвером ODBC MySQL при передаче данных. Все 64 бит. Версия 5.3 с драйвером ODBC 5.1.13 работает нормально.
Ответ 3
Я предлагаю вам использовать mysqldump так:
mysqldump --compatible=mssql
phpMyAdmin по-прежнему является веб-приложением и потенциально может иметь некоторые ограничения для больших баз данных (script время выполнения, распределяемая память и так далее).
Ответ 4
Вот мой подход для импорта .sql файлов в MS SQL:
-
Экспортировать таблицу из MySQL с параметрами
--compatible=mssql
и--extended-insert=FALSE
:mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql
-
Разделите экспортированный файл с помощью PowerShell на 300000 строк в файле:
$i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}
-
Запуск каждого файла в Microsoft SQL Server Management Studio
Несколько советов как ускорить вставку.
Другой подход заключается в использовании опции mysqldump –where
. Используя эту опцию, вы можете разделить таблицу на любое условие, которое поддерживается предложением where
sql.
Ответ 5
Если вы выполняете экспорт с помощью PhpMyAdmin, вы можете переключить режим совместимости SQL в "MSSQL". Таким образом, вы просто запускаете экспортированный скрипт для своей базы данных MS SQL, и все готово.
Если вы не можете или не хотите использовать PhpMyAdmin, в mysqldump также есть опция совместимости, но лично я бы предпочел, чтобы PhpMyAdmin сделал это для меня.
Ответ 6
У меня была очень похожая проблема сегодня - мне нужно было скопировать большую таблицу (5 миллионов строк) из MySql в MS SQL.
Вот шаги, которые я сделал (под Ubuntu Linux):
-
Создана таблица в MS SQL, структура которой соответствует исходной таблице в MySql.
-
Установленная командная строка MS SQL: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu
-
Сброс таблицы из MySql в файл:
mysqldump \ --compact \ --complete-insert \ --no-create-info \ --compatible=mssql \ --extended-insert=FALSE \ --host "$MYSQL_HOST" \ --user "$MYSQL_USER" \ -p"$MYSQL_PASS" \ "$MYSQL_DB" \ "$TABLE" > "$FILENAME"
-
В моем случае файл дампа был довольно большим, поэтому я решил разбить его на несколько небольших фрагментов (по 1000 строк каждый) -
split --lines=1000 "$FILENAME" part-
-
Наконец, я повторил эти маленькие файлы, сделал некоторые замены текста и выполнил части по одному на сервере MS SQL:
export SQLCMD=/opt/mssql-tools/bin/sqlcmd x=0 for file in part-* do echo "Exporting file [$file] into MS SQL. $x thousand(s) processed" # replaces \' with '' sed -i "s/\\\'/''/g" "$file" # removes all " sed -i 's/"//g' "$file" # allows to insert records with specified PK(id) sed -i "1s/^/SET IDENTITY_INSERT $TABLE ON;\n/" "$file" "$SQLCMD" -S "$AZURE_SERVER" -d "$AZURE_DB" -U "$AZURE_USER" -P "$AZURE_PASS" -i "$file" echo "" echo "" x=$((x+1)) done echo "Done"
Конечно, вам нужно будет заменить мои переменные типа $AZURE_SERVER
, $TABLE
, e.t.c. с твоим.
Надеюсь, что это поможет.
Ответ 7
У этого парня есть простой трюк с использованием MS Access в качестве туннеля между MySQL и MSSQL
Вы можете прочитать сообщение в http://azamudd.in/convert-data-from-mysql-into-mssql-the-easy-way-via-ms-access/
Ответ 8
Также вы можете использовать "ODBC" + "Мастер импорта и экспорта SQL Server". Ниже ссылка описывает это: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql-server-data-migration/
Ответ 9
Бежать:
mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
Хотите увидеть панель процесса?
pv mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql