web-dev-qa-db-ja.com

SQL ServerデータベースをMySQLにエクスポートする方法は?

SQL Serverデータベースのバックアップファイル(.bak)からMySQLに変換しようとしています。 この質問 と回答は非常に有用であり、データベースを正常にインポートしましたが、MySQLへのエクスポートに固執しています。

MySQL Migration Toolkitが提案されましたが、MySQL Workbenchに置き換えられたようです。移行ツールが機能したのと同じ方法で、MySQL Workbenchを使用してSQL Serverから移行することはできますか?

または、Migration Toolkitはまだどこかで利用できますか?

80
matkins

MySQL Workbench を使用すると、Microsoft SQL ServerからMySQLにデータとアプリケーションをより少ない時間と労力で迅速に移行できます。

このツールには、次のような多くの便利な機能があります。

  • データベースの移行-Microsoft SQL Server、Sybase ASEおよびPostgreSQLからの移行を有効にします。
  • 移行プロジェクト管理-移行の設定、コピー、編集、実行、スケジュールを可能にします。

続きを読む http://www.mysql.com/products/workbench/migrate/

48
Javier Cadiz

sqlyog を使用して、mssqlからmysqlに移行します。 移行ツールキットとワークベンチ を試しましたが、その SJA がsqlyogを気に入っていました。インポートプロセスをスケジュールでき、WHERE句を使用して増分インポートを実行できます。

enter image description here

22
Man_k

PhpMyAdminには、MSSQLファイルタイプもインポートできるインポートウィザードがあります。

サポートするDBスクリプトのタイプについては、 http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html をご覧ください。

7

mSSQL互換のSQLダンプがある場合は、このオンラインツールを使用して1つずつMySQLクエリに変換できます

http://burrist.com/mstomy.php

あなたの時間を節約したい

6
HimalayanCoder

前述のように、データにタブ文字、コンマ、または改行が含まれている場合、CSVでエクスポートおよびインポートするのは非常に困難になります。フィールドから値がオーバーフローし、エラーが発生します。長いフィールドのいずれかに改行文字が含まれる複数行のテキストが含まれている場合、この問題はさらに悪化します。

これらの場合の私の方法は、BCPコマンドラインユーティリティを使用してSQLサーバーからデータをエクスポートし、MySQLのLOAD DATA INFILE .. INTO TABLEコマンドを使用してデータファイルを読み込むことです。BCPは最も古いSQL Serverの1つです。コマンドラインユーティリティ(SQL Serverの誕生-v6.5)ですが、現在でも使用されており、データを取得する最も簡単で信頼性の高い方法の1つです。

この手法を使用するには、MySQLで同じスキーマまたは同等のスキーマを使用して各宛先テーブルを作成する必要があります。これを行うには、SQLエンタープライズマネージャーで[データベース]を右クリックし、[タスク]-> [スクリプトの生成...]をクリックして、すべてのテーブルのSQLスクリプトを作成します。次に、手動でスクリプトをMySQL互換SQLに変換し(ジョブの間違いなく最悪の部分)、最後にMySQLデータベースでCREATE TABLEコマンドを実行して、列ごとに空のテーブルをSQLサーバーバージョンに一致させる必要がありますデータ。

次に、次のようにMS-SQL側からデータをエクスポートします。

bcp DatabaseName..TableName out TableName.dat -q -c -T -S ServerName -r \0 -t !\t!

(SQL Server Expressを使用している場合、-S "ComputerName\SQLExpress"のような-S値を使用します)

これにより、![tab]!で区切られたフィールドを持つTableName.datという名前のファイルが作成されます。そして、\ 0 NUL文字で区切られた行。

.datファイルをMySQLサーバーの/ tmpにコピーし、次のようにMySQL側にロードします。

LOAD DATA INFILE '/tmp/TableName.dat' INTO TABLE TableName FIELDS TERMINATED BY '!\t!' LINES TERMINATED BY '\0';

MySQL側でテーブル(この例ではTableName)を作成する必要があることを忘れないでください。

この手順は、SQLスキーマの変換に関しては非常に手作業ですが、最も困難なデータでも機能します。また、フラットファイルを使用するため、SQL ServerがMySQLと対話するように説得する必要はありません。

5

Data Loader ツールを使用すると、これを簡単に行うことができます。このツールを使用する前にこれを既に実行しており、良いことがわかりました。

4
Kevin

MySQL Migration Tool Kitの[詳細設定]タブで以下の接続文字列を使用して、SQL Server 2008インスタンスに接続しました。

jdbc:jtds:sqlserver://"sql_server_ip_address":1433/<db_name>;Instance=<sqlserver_instanceName>;user=sa;password=PASSWORD;namedPipe=true;charset=utf-8;domain= 

通常、パラメーターには「systemName\instanceName」があります。ただし、上記では追加しない "systemName \"(InstanceNameのみを使用)。

InstanceNameの内容を確認するには、services.mscに移動して、MSSQLインスタンスのDisplayNameを確認します。 MSSQL $ instanceNameに似ています。

Mysql移行ツールキットからのMSSQL接続でこのヘルプを願っています。

正しいようです。MigrationToolkitはMySQL Workbenchと統合される予定です-しかし、これはまだ完了していないと思います。 MySQL GUIツール(Migration Toolkitを含む)のサポート終了のお知らせをご覧ください。

http://www.mysql.com/support/eol-notice.html

MySQLは、MySQL GUIツールパッケージのアーカイブを維持します。

http://dev.mysql.com/downloads/gui-tools/5.0.html

2
Martin

MySQL Migration Toolkit(1.1.10)は、ここからダウンロードできます:

http://downloads.mysql.com/archives.php?p=MySQLDeveloperSuite&v=1.1.1

1
Matias P.

公式ウェブサイトではダウンロードが利用できなくなりました( http://dev.mysql.com/downloads/gui-tools/5.0.html )、代わりにこちらをご覧ください: http: //download.softagency.net/MySQL/Downloads/MySQLGUITools/

0
Marco C.

Mssqlからmysqlに取得しなければならないデータがいくつかあり、解決策を見つけるのが困難でした。だから私が最後にやったこと(それを行うには少し長い方法がありましたが、最後の手段としてはうまくいきます):

  • SQL Server Management Studio Expressでmssqlデータベースを開きます(2005年使用)
  • 各テーブルを順番に開き、
  • 左上隅のボックスをクリックして、テーブル全体を選択します。

  • データをクリップボードにコピー(ctrl + v)

  • MS Excelを開く
  • クリップボードからデータを貼り付ける
  • Excelファイルを.csvとして保存する
  • 各テーブルについて上記を繰り返します
  • これで、データをmysqlにインポートできるはずです。

お役に立てれば

0
Dave