これらのテーブルに挿入されるテーブル、定義、およびデータを含むMySQLダンプからの.sqlファイルがあります。ダンプファイルに示されているこのデータベースをMS SQL Serverデータベースに変換するにはどうすればよいですか?
私はこれをネット上で見つけました
テーブルごとに実行する必要があるため、少し作業が必要です。しかし、とにかく、テーブル、データ、制約をMS SQLデータベースにコピーできました。
リンクはこちら
http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx
SQL Server Migration Assistant(SSMA) を使用します
MySQLに加えて、Oracle、Sybase、およびMS Accessをサポートしています。
それは非常に賢く、自明ではない転送でも処理できるようです。また、(GUIに加えて)コマンドラインインターフェイスも備えているため、理論的にはバッチロードプロセスに統合できます。
これはMySQLバージョンの現在のダウンロードリンク https://www.Microsoft.com/en-us/download/details.aspx?id=54257
現在の(2016年6月)安定バージョン6.0.1は、データの転送中に現在の(5.3.6)MySQL ODBCドライバーでクラッシュします。すべて64ビット。 5.1.13 ODBCドライバーを使用する5.3バージョンは正常に動作します。
mysqldump を次のように使用することをお勧めします。
mysqldump --compatible=mssql
phpMyAdmin はまだWebアプリであり、大規模データベース(スクリプト実行時間、割り当て可能なメモリなど)オン)。
.sqlファイルをMS SQLにインポートするための私のアプローチは次のとおりです。
--compatible=mssql
および--extended-insert=FALSE
オプションを使用してMySQLからテーブルをエクスポートします。
mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql
PowerShellでエクスポートされたファイルをファイルごとに300000行で分割します。
$i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}
MS SQL Server Management Studioで各ファイルを実行する
いくつかのヒントがあります 挿入を高速化する方法 。
他のアプローチはmysqldump –where
オプションを使用することです 。このオプションを使用すると、where
sql句でサポートされている任意の条件でテーブルを分割できます。
PhpMyAdmin でエクスポートを行う場合、sql互換モードを「MSSQL」に切り替えることができます。そうすれば、エクスポートしたスクリプトをMS SQLデータベースに対して実行するだけで完了です。
PhpMyAdminを使用できない場合、または使用したくない場合は、 mysqldump にも互換性オプションがありますが、個人的にはPhpMyAdminを使用してください。
今日、非常によく似た問題がありました-MySqlからMS SQLに大きなテーブル(500万行)をコピーする必要がありました。
ここに私が行った手順があります(Ubuntu Linuxで):
MySQLのソーステーブルと一致する構造を持つMS SQLのテーブルを作成しました。
インストールされたMS SQLコマンドライン: https://docs.Microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubunt
MySqlからファイルにダンプされたテーブル:
mysqldump\ --compact\ --complete-insert\ --no-create-info\ --compatible = mssql\ --extended-insert = FALSE\ --Host "$ MYSQL_Host"\ --user "$ MYSQL_USER"\ -p "$ MYSQL_PASS "\ " $ MYSQL_DB "\ " $ TABLE ">" $ FILENAME "
私の場合、ダンプファイルは非常に大きかったので、それをいくつかの小さな断片(各1000行)に分割することにしました-split --lines=1000 "$FILENAME" part-
最後に、これらの小さなファイルを反復処理し、テキストの置換を行い、MS SQLサーバーに対して1つずつ実行しました。
export SQLCMD =/opt/mssql-tools/bin/sqlcmd x = 0 part-* [.____のファイル用。] do echo「ファイル[$ file]をMS SQLにエクスポートしています。$ x千件処理しました」 #\ 'を' ' に置き換えますsed -i "s/\\\ '/' '/ g" "$ file" #すべてを削除します " sed -i' s /" // g ' "$ file" #指定したPK(id) でレコードを挿入できますsed -i "1s/^/SET IDENTITY_INSERT $ TABLE ON;\n /" "$ファイル " " $ SQLCMD "-S" $ Azure_SERVER "-d" $ Azure_DB "-U" $ Azure_USER "-P" $ Azure_PASS "-i" $ file " echo "" echo "" x = $((x + 1)) done echo "完了」
もちろん、$Azure_SERVER
、$TABLE
、e.t.cなどの私の変数を置き換える必要があります。あなたのものと。
お役に立てば幸いです。
実行:
mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
プロセスバーを表示しますか?
pv mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
また、「ODBC」+「SQL Serverインポートおよびエクスポートウィザード」を使用できます。以下のリンクで説明します: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql-server-data-migration/