Я бьюсь головой о SQL Server 2005
, пытаясь вытащить много данных. Мне дали базу данных с почти 300 таблицами, и мне нужно превратить ее в базу данных MySQL. Моим первым решением было использовать bcp, но, к сожалению, он не дает корректного CSV - строки не инкапсулированы, поэтому вы не сможете работать со строками, в которых есть запятая (или что вы используете в качестве разделителя), и мне все равно придется вручную писать все операторы создания таблиц, поскольку, очевидно, CSV ничего не говорит вам о типах данных.
Было бы лучше, если бы существовал какой-то инструмент, который мог бы подключаться как к SQL Server, так и к MySQL, а затем делать копию. Вы потеряете представления, хранимые процедуры, триггеры и т.д., но ведь не сложно скопировать таблицу, использующую только базовые типы, из одной БД в другую... не так ли?
Кто-нибудь знает о таком инструменте? Меня не волнует, сколько предположений он делает или какие упрощения происходят, если он поддерживает целочисленные, плавающие, временные и строковые типы. Мне все равно придется делать много обрезки, нормализации и т.д., поэтому я не забочусь о сохранении ключей, отношений или чего-то подобного, но мне нужен исходный набор данных быстро!
Лучшим способом, который я нашел, является MySQL Migration Toolkit, предоставляемый компанией MySQL. Я успешно использовал его для нескольких крупных проектов по миграции.
SQL-сервер 2 005 " Standard" " Developer" и " Enterprise" у выпусков есть SSIS, который заменил DTS от SQL-сервера 2000. У SSIS есть построенный в связи с it' s владеют DB, и Вы можете найти связь, которую кто-то еще написал для MySQL. [Здесь] [2] один пример. Как только у Вас есть свои связи, Вам необходимо создать пакет SSIS, который перемещает данные между двумя.
Я не должен был перемещать данные от SQlServer до MySQL, но я предполагаю, что, как только связь MySQl установлена, это работает то же движущимися данными между двумя SQLServer DBs, который является довольно прямым.
[2]: http://jmayo.spaces.live.com/blog/cns! 5F243997972597CE! 399.entry
Используя Студию управления MSSQL i' ve перешел столы с DB MySQL ОЛЕ. Щелкните правой кнопкой мыши по своей базе данных и пойдите в " Tasks-> Экспортный Data" оттуда Вы можете определить источник DB MsSQL ОЛЕ, источник DB MySQL ОЛЕ и создать отображения колонки между этими двумя источниками данных.
You' ll, скорее всего, хотят к установке базу данных, и столы заранее на месте назначения MySQL (экспорт захочет составить таблицы автоматически, но это часто приводит к неудаче). Вы можете быстро составить таблицы в MySQL, используя " Tasks-> Произведите Scripts" щелкая правой кнопкой мыши по базе данных. Как только Ваши сценарии создания произведены you' ll должен ступить через и искать/заменять ключевые слова и типы, которые существуют в MSSQL к MYSQL.
Конечно, Вы могли также сделать копию базы данных как нормальный и найти полезность, которая восстановит резервную копию MSSQL на MYSQL. I' m не уверенный, если Вы существуете как бы то ни было.
Создание собственного PHP-решения, конечно, будет работать, хотя я не уверен, что есть хороший способ автоматически дублировать схему из одной БД в другую (возможно, это был ваш вопрос).
Если вы просто копируете данные, и/или вам в любом случае нужен пользовательский код для преобразования измененных схем между двумя БД, я бы рекомендовал использовать PHP 5.2+ и библиотеки PDO. Вы сможете подключаться с помощью PDO ODBC (и использовать драйверы MSSQL). У меня было много проблем с получением больших текстовых полей и многобайтовых символов из MSSQL в PHP при использовании других библиотек.
Другим инструментом, который можно попробовать, может быть набор SQLMaestro - http://www.sqlmaestro.com Немного сложно определить точный инструмент, но у них есть множество инструментов, как бесплатных, так и приобретаемых, которые выполняют широкий спектр задач для различных платформ баз данных. Я бы предложил сначала попробовать инструмент Data Wizard для MySQL, поскольку я считаю, что в нем будет правильный инструмент "импорта", который вам нужен.