現在、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 ファイルは SQL Server で使用されるストレージ形式ではありません。
SQLyog などを使用してデータベースのスキーマをスクリプト ファイルにスクリプト化することはできますが、スクリプトを直接適用することはできないため、データベースごとに (この場合は MySQL から Access に) 構文が大きく異なることがわかります。
多大な努力を払って、スクリプトを編集することで変換スクリプトを作成できます (結果のスクリプトのサイズによっては、おそらくプログラムで自動化されます)。ODBC を使用してテーブル (およびデータ) をコピーし、生成されたスクリプトから手動でリレーションシップを抽出して再適用する方がよいと思います。時間はかかりますが、1 回限りの操作で済むことを願っています。
両方のシステムが同じデータベースである場合、比較とスクリプト生成を実行できるツール (MySQL の場合は TOAD、Microsoft SQL の場合は RedGate Compare) がありますが、データベース間の作業は行いません (少なくとも私が知っているものではありません)。 )。
ODBC DSN を作成すると、TransferDatabase を使用して MySQL データベースからインポートできます。GET EXTERNAL DATA コマンド (または A2007/A2010 のコマンド) を使用して手動で実行し、それがどの程度うまく機能するかを確認できます。すべてのデータ型を正確に取得できるわけではありませんが、いくつかのマッサージを行うことで、最適なデータ型に近づけることができます。
MySQL テーブルにリンクして直接使用できない理由はありますか? つまり、そもそも Access にインポートする必要があるのはなぜでしょうか。
アクセス: クエリを実行します。すべての RDMS には独自の構文があるため (SQL は ANSI 標準ですが)、SQL コードを適合させるようにしてください。