У меня есть файл .sql из дампа MySQL, содержащий таблицы, определения и данные, которые нужно вставить в эти таблицы. Как я могу преобразовать эту базу данных, представленную в файле дампа, в базу данных MS SQL Server?
mysql
sql-server
mysqldump
марионетка
источник
источник
Ответы:
Используйте помощник по миграции SQL Server (SSMA)
Помимо MySQL он поддерживает Oracle, Sybase и MS Access.
Он оказался довольно умным и способен обрабатывать даже нетривиальные переводы. Он также имеет интерфейс командной строки (в дополнение к графическому интерфейсу), поэтому теоретически его можно интегрировать в некоторый процесс пакетной загрузки.
Это текущая ссылка для загрузки версии MySQL https://www.microsoft.com/en-us/download/details.aspx?id=54257
Текущая (июнь 2016 г.) стабильная версия 6.0.1 дает сбой при передаче данных с текущим (5.3.6) драйвером MySQL ODBC. Все 64 бит. Версия 5.3 с драйвером ODBC 5.1.13 работает нормально.
источник
Я предлагаю вам использовать mysqldump вот так:
mysqldump --compatible=mssql
phpMyAdmin по-прежнему является веб-приложением и потенциально может иметь некоторые ограничения для больших баз данных (время выполнения скрипта, выделяемая память и т. д.).
источник
Я нашел способ для этого в сети
Это требует небольшой работы, потому что это нужно делать таблица за таблицей. Но в любом случае я мог скопировать таблицы, данные и ограничения в базу данных MS SQL.
Вот ссылка
http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx
источник
Если вы выполняете экспорт с помощью PhpMyAdmin , вы можете переключить режим совместимости sql на «MSSQL». Таким образом, вы просто запускаете экспортированный сценарий для своей базы данных MS SQL, и все готово.
Если вы не можете или не хотите использовать PhpMyAdmin, в mysqldump также есть опция совместимости , но лично я бы предпочел, чтобы PhpMyAdmin сделал это за меня.
источник
Вот мой подход к импорту файлов .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}
Запустите каждый файл в MS SQL Server Management Studio
Есть несколько советов, как ускорить вставку .
Другой подход - использовать
–where
опцию mysqldump . Используя эту опцию, вы можете разделить свою таблицу по любому условию, которое поддерживается предложениемwhere
sql.источник
--databases [db_name]
ключевое слово try, как это объясняется в этом ответе: stackoverflow.com/a/26096339/155687Сегодня у меня была очень похожая проблема - мне нужно было скопировать большую таблицу (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 в файл:
В моем случае файл дампа был довольно большим, поэтому я решил разбить его на несколько маленьких частей (по 1000 строк каждая) -
split --lines=1000 "$FILENAME" part-
Наконец, я перебрал эти небольшие файлы, произвел некоторые замены текста и выполнил части один за другим на сервере MS SQL:
Конечно, вам нужно заменить мои переменные, например
$AZURE_SERVER
,$TABLE
и т. Д., На ваши.Надеюсь, это поможет.
источник
Для меня лучше всего было экспортировать все данные с помощью этой команды:
mysqldump -u USERNAME -p --all-databases --complete-insert --extended-insert=FALSE --compatible=mssql > backup.sql
--extended-insert = FALSE необходимо, чтобы избежать ограничения импорта mssql 1000 строк.
Я создал свои таблицы с помощью инструмента миграции, поэтому не уверен, что CREATE из файла backup.sql будет работать.
В SSMS MSSQL мне пришлось импортировать таблицу данных по таблице с IDENTITY_INSERT ON, чтобы записать поля идентификатора:
SET IDENTITY_INSERT dbo.app_warehouse ON; GO INSERT INTO "app_warehouse" ("id", "Name", "Standort", "Laenge", "Breite", "Notiz") VALUES (1,'01','Bremen',250,120,''); SET IDENTITY_INSERT dbo.app_warehouse OFF; GO
Если у вас есть отношения, вы должны сначала импортировать дочерний элемент, а затем таблицу с внешним ключом.
источник
Также вы можете использовать «ODBC» + «Мастер импорта и экспорта SQL Server». Ссылка ниже описывает это: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql-server-data-migration/
источник
Бегать:
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
источник
вы можете использовать приложение sqlie для преобразования из mysql в sqlserver, вы можете посмотреть это видео https://www.youtube.com/watch?v=iTVEqys_vTQ&t=108s
источник