Преобразовать резервную копию MySQL (сценарий дампа) в MS SQL?

7051
David

У меня есть mysqldumpвывод довольно большой (по мере выполнения операций вручную) базы данных, сохраненной в текстовом файле. Кто-нибудь знает (бесплатный) способ использовать это для создания базы данных в MS SQL? Я специально использую SQL Server 2008.

1

2 ответа на вопрос

2
RolandoMySQLDBA

Вы можете перезагрузить эти данные обратно в MySQL и выполнить mysqldump, используя следующее:

mysqldump -h ... -u ... -p ... --compatible = mssql> MSSQL_Compatible_Data.sql

Вот что говорит по этому поводу mysqldump --help --verbose

--compatible = name Изменить дамп, чтобы он был совместим с данным режимом.
По умолчанию таблицы выгружаются в формате, оптимизированном для
MySQL. Допустимые режимы: ansi, mysql323, mysql40,
postgresql, oracle, mssql, db2, maxdb, no_key_options,
no_table_options, no_field_options. Можно использовать несколько
режимов, разделенных запятыми. Примечание. Требуется сервер MySQL
версии 4.1.0 или выше. Эта опция игнорируется в
более ранних версиях сервера.

Попробуйте!

1
Ice

Я использовал что-то вроде этого:

-- Path/Filename of inputfile for later use declare @Out varchar(100) set @out = 'c:\data\Test\TBL1245.dat'  -- Define a structurefile based on a predefined target-table for later use: exec master..xp_cmdshell 'bcp DB4711.dbo.[TBL1245] format nul -t\t -c -x -f "c:\data\Test\Config\TBL1245.xml" -T'  -- initialie the targettable: truncate table DB4711.dbo.[TBL1245]  -- Load the data: INSERT DB4711.dbo.[TBL1245]  exec('SELECT *  FROM OPENROWSET ( BULK ''' + @out + ''', FORMATFILE = ''c:\data\Test\Config\TBL1245.xml'', ROWS_PER_BATCH = 100 ) as co_in where KeyFLD is not NULL') -- a condition may be set here if needed 

Предполагая, что у вас есть таблица (TBL1245) в базе данных (DB4711) для хранения всех файлов вашего файла данных. если вам нужно изменить разделитель, смотрите в ms-bol параметры bcp.