it-swarm-ja.com

MySQLバックアップ(ダンプスクリプト)をMS SQLに変換しますか?

かなり大きな(手動で行うことによる)データベースのmysqldump出力が、テキストファイルに保存されています。これを使用してMSSQLでデータベースを構築する(無料の)方法を知っている人はいますか?私は特にSQLServer2008を使用しています。

1
David

私はこのようなものを使用しました:

-- 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

データベース(DB4711)にdatadumo-fileのすべてのファイルを保持するテーブル(TBL1245)があると仮定します。区切り文字を変更する必要がある場合は、ms-bolでbcpパラメーターを参照してください。

1
Ice

そのデータを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。 1つはいくつかを使用することができます
コンマで区切られたモード。注:MySQLサーバーが必要です
バージョン4.1.0以降。このオプションは無視されます
以前のサーバーバージョン。

試してみる !!!

2
RolandoMySQLDBA