Как экспортировать данные из SQL Server 2005 в MySQL
Я бился головой SQL Server 2005
пытаясь получить много данных. Мне дали базу данных с почти 300 таблицами, и мне нужно превратить ее в базу данных MySQL. Мой первый вызов состоял в том, чтобы использовать bcp, но, к сожалению, он не выдает действительный CSV - строки не инкапсулированы, поэтому вы не можете иметь дело с любой строкой, в которой есть строка с запятой (или с тем, что вы используете в качестве разделителя). и мне все равно придется написать все операторы создания таблицы вручную, так как очевидно, что CSV ничего не говорит вам о типах данных.
Что было бы лучше, если бы был какой-то инструмент, который мог бы соединиться как с SQL Server, так и с MySQL, а затем сделать копию. Вы теряете представления, хранимые процедуры, триггеры и т. Д., Но нетрудно скопировать таблицу, в которой используются только базовые типы, из одной БД в другую... не так ли?
Кто-нибудь знает такой инструмент? Я не против, сколько предположений он делает или какие упрощения происходят, если он поддерживает целое число, число с плавающей запятой, дату и время. В любом случае мне приходится много обрезать, нормализовать и т. Д., Поэтому мне не важно хранить ключи, отношения или что-то в этом роде, но мне нужен быстрый набор начальных данных!
5 ответов
Лучший способ, который я нашел, - это MySQL Migration Toolkit, предоставляемый MySQL. Я успешно использовал его для некоторых крупных проектов по миграции.
SQL Server 2005 "Standard", "Developer" и "Enterprise" имеют SSIS, который заменил DTS с Sql server 2000. SSIS имеет встроенное соединение со своей собственной БД, и вы можете найти соединение, которое кто-то другой написал для MySQL, Вот один пример. После того, как у вас есть соединения, вы сможете создать пакет служб SSIS, который перемещает данные между ними.
Мне не приходилось перемещать данные из SQlServer в MySQL, но я представляю, что после установки соединения MySQl он работает так же, как и перемещение данных между двумя базами данных SQLServer, что довольно просто.
Используя MSSQL Management Studio, я перенес таблицы с OLE DB MySQL. Щелкните правой кнопкой мыши по своей базе данных и перейдите в "Задачи-> Экспорт данных", после чего вы можете указать источник OLE DB MsSQL, источник OLE DB MySQL и создать сопоставления столбцов между двумя источниками данных.
Скорее всего, вы захотите заранее настроить базу данных и таблицы в месте назначения MySQL (при экспорте потребуется создавать таблицы автоматически, но это часто приводит к сбою). Вы можете быстро создать таблицы в MySQL, используя "Задачи-> Создать сценарии", щелкнув правой кнопкой мыши на базе данных. После того, как ваши сценарии создания сгенерированы, вам нужно будет пройтись и искать / заменять ключевые слова и типы, которые существуют в MSSQL, на MYSQL.
Конечно, вы также можете сделать резервную копию базы данных, как обычно, и найти утилиту, которая восстановит резервную копию MSSQL на MYSQL. Я не уверен, если таковой существует, однако.
Развертывание вашего собственного PHP-решения, безусловно, будет работать, хотя я не уверен, что существует хороший способ автоматического дублирования схемы из одной БД в другую (возможно, это был ваш вопрос).
Если вы просто копируете данные и / или вам все равно нужен собственный код для преобразования между измененными схемами между двумя БД, я бы порекомендовал использовать PHP 5.2+ и библиотеки PDO. Вы сможете подключиться с помощью PDO ODBC (и использовать драйверы MSSQL). У меня было много проблем с получением больших текстовых полей и многобайтовых символов из MSSQL в PHP с использованием других библиотек.
Еще одним инструментом, который стоит попробовать, был бы набор SQLMaestro - http://www.sqlmaestro.com/ Немного сложно прибить точный инструмент, но у них есть множество инструментов, как бесплатных, так и для покупки, которые решают широкий спектр задач. для нескольких платформ баз данных. Я бы посоветовал сначала попробовать инструмент Data Wizard для MySQL, так как считаю, что у него будет подходящий инструмент "импорта", который вам нужен.