SQL Server2005からMySQLにデータをエクスポートする方法[終了]


86

私はSQL Server 2005たくさんのデータを取り出そうとすることに頭を悩ませてきました。300近くのテーブルを含むデータベースが提供されたので、これをMySQLデータベースに変換する必要があります。私の最初の呼び出しはbcpを使用することでしたが、残念ながら有効なCSVは生成されません-文字列はカプセル化されていないため、カンマを含む文字列(または区切り文字として使用するもの)を含む行を処理できません明らかにCSVはデータ型について何も教えてくれないので、私はまだすべてのcreatetableステートメントを手書きする必要があります。

SQL ServerとMySQLの両方に接続できるツールがあれば、コピーを実行する方がよいでしょう。ビュー、ストアドプロシージャ、トリガーなどが失われますが、あるDBから別のDBに基本型のみを使用するテーブルをコピーすることは難しくありません...そうですか?

誰かがそのようなツールを知っていますか?整数、浮動小数点数、日時、および文字列をサポートしている限り、それがいくつの仮定を行うか、またはどのような単純化が発生するかは気にしません。とにかく多くのプルーニングや正規化などを行う必要があるため、キーや関係などを保持する必要はありませんが、初期データセットを高速で保持する必要があります。


1
MSSQL2MySQLを使用して成功している人が何人かいると聞きましたが、自分でそれを保証することはできません。
Greg Hurlman 2008

1
SQLYobでできると聞きました。< webyog.com/en >ここ:< searchsqlserver.techtarget.com/tip/… >
borjab 2008

このツールはまさにあなたが求めていたものです:FullConvertEnterprise。確かに、ビュー、プロシージャ、トリガーは失われますが、巨大なテーブル用に高度に最適化されています。すべてのオブジェクト(手順など)を変換する別のソリューション(より高価)は、SqlTran SQL ServerをMySQLに
変換する


1
@borjab:SQLyogは以前のバージョンではODBCで動作していましたが、現在は動作していないため、このジョブのオプションではありません。
BlaM 2012

回答:


59

私が見つけた最良の方法は、MySQLが提供するMySQL MigrationToolkitです。私はいくつかの大規模な移行プロジェクトでこれをうまく使用しました。



DATE列またはDATETIME列を変換したくない:(
Robert Ivanc 2010年

1
注:現在、MySQL Migration ToolkitはLinuxでは使用できません(dev.mysql.com/doc/migration-toolkit/en/…から)
mkirk 2011年

1
My SQL Migration Toolkitには、32ビットバージョンのJDK 5アップデート8以降(バージョン5、バージョン6は機能しない)が必要であることに注意して
casterle

9

MSSQL Management Studioを使用して、MySQL OLEDBでテーブルを移行しました。データベースを右クリックして[タスク]-> [データのエクスポート]に移動し、そこからMsSQL OLEDBソースとMySQLOLE DBソースを指定して、2つのデータソース間の列マッピングを作成できます。

ほとんどの場合、MySQLの宛先でデータベースとテーブルを事前にセットアップすることをお勧めします(エクスポートではテーブルが自動的に作成されますが、これにより失敗することがよくあります)。データベースを右クリックすると、「タスク->スクリプトの生成」を使用してMySQLでテーブルをすばやく作成できます。作成スクリプトが生成されたら、MSSQLからMYSQLに存在するキーワードとタイプをステップスルーして検索/置換する必要があります。

もちろん、通常のようにデータベースをバックアップして、MYSQLでMSSQLバックアップを復元するユーティリティを見つけることもできます。ただし、存在するかどうかはわかりません。


9

SQL Server 2005の「標準」、「開発」と「エンタープライズ」版は持っているSSIS SQLサーバー2000 SSISが内蔵されており、独自のDBへの接続からDTSを交換し、あなたが他の誰かがために書かれたことを、接続を見つけることができますMySQL。これが一例です。接続が確立されると、2つの間でデータを移動するSSISパッケージを作成できるようになります。

SQLServerからMySQLにデータを移動する必要はありませんが、MySQL接続がインストールされると、2つのSQLServerDB間でデータを移動するのと同じように機能すると思います。これは非常に簡単です。


8

スキーマをあるDBから別のDBに自動的に複製する良い方法があるかどうかはわかりませんが、独自のPHPソリューションをローリングすることは確かに機能します(おそらくこれがあなたの質問でした)。

データをコピーするだけの場合、または2つのDB間で変更されたスキーマ間で変換するためにカスタムコードが必要な場合は、PHP5.2以降とPDOライブラリを使用することをお勧めします。PDO ODBCを使用して接続できるようになります(そしてMSSQLドライバーを使用できます)。他のライブラリを使用して、MSSQLからPHPに大きなテキストフィールドとマルチバイト文字を取得する際に多くの問題が発生しました。


6

試すもう1つのツールは、SQLMaestroスイートです。正確なツールを特定するのは少し難しいですが、複数のデータベースプラットフォームのさまざまなタスクを処理する、無料と購入の両方のさまざまなツールがあります。最初にMySQL用のデータウィザードツールを試すことをお勧めします。これには、必要な適切な「インポート」ツールがあると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.