ODBCを使用して.sqlをMSAccessにインポートする
質問
現在、MySQLにデータベースがあり、MSAccessにインポートしたいと思います。
すべての関係を維持したまま(つまり、.csvにエクスポートせずに、またはODBCを使用して)これを行うことは可能ですか?
私はこの分野の初心者なので、どんな助けでも大歓迎です。
ありがとう。
解決
2つの異なる問題を解決する必要があります:
-
MySQLデータベース構造と一致する構造を持つ空のMSAccessデータベースを作成します。
-
MySQLからデータを抽出してMSAccessにロードします。
これは簡単ではありません。SQLデータベースが異なれば、構造機能やデータ型なども異なるからです。 MySQLの使用が複雑になるほど、変換中に何らかのショーストッパーが発生する可能性が高くなります(たとえば、Accessはトリガーをまったくサポートしていません)。逆に、MySQLを単純なデータストアとして使用している場合は、変換がかなり簡単であることがわかります。
MySQLデータベースと同じ構造のMSAccessデータベースを取得するには、リバースエンジニアリングを提供し、MySQLとMSAccessの両方をサポートするデータベース定義/ダイアグラム作成ツールを見つけることが最善の策です。これを使用して、MySQLデータベースをデータベース図にリバースエンジニアリングしてから、基になるデータベースをMS Accessに変更し、ツールを使用してデータベースを生成します。
Dezign For Databases をチェックしてください。これは、(とにかく、紙の上で)必要な機能を提供します。これを行います。
データを送り出すために、いくつものツールがあります。この種の操作は、一般にETL(抽出、変換、読み込み)と呼ばれます。
他のヒント
SQL Serverのことですか?出発点としては、SQL Server Integration Services(SSIS)を確認することをお勧めします。これは、そのようにデータを転送するために使用できます。
Googleも役に立ちます。最初の結果を確認してください:
http://support.microsoft.com/kb/237980
ちなみに、質問で「.sql」とおっしゃいました。.SQLファイルはスクリプトファイルであり、データベースの作成、データの挿入、テーブルの削除、データの削除、適切な権限の付与など、あらゆることができます。システムプロシージャを呼び出してマシンを再起動し、ドライブをフォーマットし、電子メールを送信します。参照のためだけに、.SQLファイルはSQLServerで使用されるストレージ形式ではありません。
SQLyogなどを使用してデータベースのスキーマをスクリプトファイルにスクリプト化できますが、構文はデータベースごとに(MySQLからAccessの場合)十分に異なるため、スクリプトを直接適用することはできません。
多大な労力を費やして、スクリプトを編集することで変換スクリプトを作成できます(結果のスクリプトサイズによっては、プログラムで自動化される可能性があります)。ODBCを使用してテーブル(およびデータ)をコピーし、生成されたスクリプトから関係を手動で抽出して再適用する方がよいと思います。時間はかかりますが、1回限りの操作でもいいと思います。
両方のシステムが同じデータベースの場合、比較とスクリプト生成を実行できるツール(MySQLの場合はTOAD、MicrosoftSQLの場合はRedGateCompare)はありますが、データベース間の作業は行いません(少なくとも私が使用したものではありません)。知っている)。
ODBC DSNを作成する場合は、TransferDatabaseを使用してMySQLデータベースからインポートできます。GET EXTERNAL DATAコマンド(またはA2007 / A2010のコマンド)を使用して手動で実行し、どのように機能するかを確認できます。すべてのデータ型を正確に取得できるわけではありませんが、マッサージを行うことで、最適なデータ型に近づけることができます。
MySQLテーブルにリンクして直接使用できない理由はありますか?つまり、なぜAccessにインポートする必要があるのですか?
これを使用してみることができます: MSAccessの変換関係のあるMySQLへ
正常に機能し、すべての関係をエクスポートします。
アクセス:クエリを実行します。すべてのRDMSには独自の構文があるため(SQLはANSI標準ですが)、必ずSQLコードを適合させてください。