web-dev-qa-db-ja.com

MySQLデータベースをMS SQL Serverにインポートする

これらのテーブルに挿入されるテーブル、定義、およびデータを含むMySQLダンプからの.sqlファイルがあります。ダンプファイルに示されているこのデータベースをMS SQL Serverデータベースに変換するにはどうすればよいですか?

80
marionmaiden

私はこれをネット上で見つけました

テーブルごとに実行する必要があるため、少し作業が必要です。しかし、とにかく、テーブル、データ、制約をMS SQLデータベースにコピーできました。

リンクはこちら

http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx

13
marionmaiden

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バージョンは正常に動作します。

57
Zar Shardan

mysqldump を次のように使用することをお勧めします。

mysqldump --compatible=mssql

phpMyAdmin はまだWebアプリであり、大規模データベース(スクリプト実行時間、割り当て可能なメモリなど)オン)。

15
deklin

.sqlファイルをMS SQLにインポートするための私のアプローチは次のとおりです。

  1. --compatible=mssqlおよび--extended-insert=FALSEオプションを使用してMySQLからテーブルをエクスポートします。

    mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql

  2. PowerShellでエクスポートされたファイルをファイルごとに300000行で分割します。

    $i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}

  3. MS SQL Server Management Studioで各ファイルを実行する

いくつかのヒントがあります 挿入を高速化する方法

他のアプローチはmysqldump –whereオプションを使用することです 。このオプションを使用すると、where sql句でサポートされている任意の条件でテーブルを分割できます。

7
Vladislav

PhpMyAdmin でエクスポートを行う場合、sql互換モードを「MSSQL」に切り替えることができます。そうすれば、エクスポートしたスクリプトをMS SQLデータベースに対して実行するだけで完了です。

PhpMyAdminを使用できない場合、または使用したくない場合は、 mysqldump にも互換性オプションがありますが、個人的にはPhpMyAdminを使用してください。

5
Whakkee

今日、非常によく似た問題がありました-MySqlからMS SQLに大きなテーブル(500万行)をコピーする必要がありました。

ここに私が行った手順があります(Ubuntu Linuxで):

  1. MySQLのソーステーブルと一致する構造を持つMS SQLのテーブルを作成しました。

  2. インストールされたMS SQLコマンドライン: https://docs.Microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubunt

  3. 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 "
  1. 私の場合、ダンプファイルは非常に大きかったので、それをいくつかの小さな断片(各1000行)に分割することにしました-split --lines=1000 "$FILENAME" part-

  2. 最後に、これらの小さなファイルを反復処理し、テキストの置換を行い、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などの私の変数を置き換える必要があります。あなたのものと。

お役に立てば幸いです。

3

実行:

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
0

また、「ODBC」+「SQL Serverインポートおよびエクスポートウィザード」を使用できます。以下のリンクで説明します: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql-server-data-migration/

enter image description here

0
amir