Как преобразовать запрос из phpMyAdmin SQL Dump в разборчивый запрос SQL Server - PullRequest
0 голосов
/ 15 июля 2010

Я предпринял небольшой проект, который уже развил текущую базу данных.Приложение было написано на php, а база данных была mysql.

Я переписываю приложение, но мне все еще нужно поддерживать структуру базы данных, а также данные.Я получил файл дампа sql.Когда я пытаюсь запустить его в студии управления сервером sql, я получаю много ошибок.Я хотел бы знать, что есть обходной путь для преобразования сценария sql из файла дампа phpMyAdmin, который был создан в tsql?

Любые идеи?

Ответы [ 3 ]

2 голосов
/ 15 июля 2010

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

РЕДАКТИРОВАТЬ: я вижу, что оригинальный плакат былоб этом известно (на посте не было тега MySQL).Мое предложение состояло бы в том, чтобы повторно выгрузить базу данных в формате CSV (например) и импортировать через массовую вставку, например, для одной таблицы,

CREATE TABLE MySQLData [...]

BULK
INSERT MySQLData
FROM 'c:\mysqldata.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

Это должно работать нормально, если база данных не 't слишком большой и имеет только несколько таблиц.

Кстати, у вас больше проблем, чем при запуске скрипта: отображение типов данных непросто.

Вот статья о миграции MySQL -> SQL Server с помощью мастера импорта / экспорта DTS, что вполне может быть хорошим способом, если ваша база данных велика (и у вас все еще есть доступ, т. е. не только дамп).

1 голос
/ 15 июля 2010

Синтаксис между Tsql и Mysql не за миллион миль, вы, вероятно, могли бы переписать его методом проб и ошибок и серии поиска и замены.

Лучшим вариантом, вероятно, будет установка mysql и mysqlconnector и восстановление базы данных с использованием файла dubp.

Затем вы можете создать связанный сервер на сервере SQL и выполнить ряд запросов, подобных следующему:

SELECT * 
INTO SQLTableName
FROM OPENQUERY
(LinkedServerName, 'SELECT * FROM  MySqlTableName') 
0 голосов
/ 15 июля 2010

Утилита MySQL mysqldump может создавать несколько совместимых дампов для других систем.Например, используйте --compatible=mssql.Этот параметр не гарантирует совместимость с другими серверами, но может предотвратить большинство ошибок, оставляя меньше возможностей для изменения вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...