2

アクセスでアップサイズウィザードを使用してこれを正常に変換できることはわかっていますが、これはサーバー側のプロセスであり、サードパーティから毎日mdbファイルを取得しているため、これらをタッチなしで取り込むことができる必要があります。建築。

現在、私はすべてを手作業で書き始めようとしています(ugh)。データソースを介してAccessデータベースを読み取り、一括挿入またはエンティティフレームワークを介してSQLサーバーにパンチアップします。しかし、これを行うためのより良い方法があったらいいのにと思います。たくさんのテーブルとたくさんのデータがあるので、私はたくさんの創造的な方法を喜んで楽しませます。

4

1 に答える 1

2

頭に浮かぶ方法はたくさんありますが、それらはすべて実際にカスタムプログラミングを伴いますが、実装は比較的単純で簡単なはずです。

  1. 別のAccessDBから、プログラムで(つまり、VBAを使用して)ソースDBを開きます。ソースDBでSQLバックエンドへのリンクテーブルを作成します。ソースDBからリンクされたテーブルにデータをコピーします(を使用insert dest select * from source)。
  2. OPENDATASETまたはSQLServerを使用OPENROWSOURCEして、Access DBに直接接続し、データをコピーします。再度使用しinsert dest select * from sourceて、データをコピーしたりselect * into dest from source、ソースデータから新しいテーブルを作成したりできます。これには、SQLサーバーがデフォルトで有効になっていないため、いくつかのシステム設定を微調整する必要がありますが、いくつかのGoogle検索で開始できます。
  3. .NETプログラムから、SqlBulkCopy(自動化用の.NETクラスbcp)を使用して、Accessデータベースからデータをアップロードします。あるソースから別のソースにデータを移行するためだけにEFレイヤー全体を構築する理由はないため、ADO.Netを使用してデータを直接操作するだけです。

さまざまなプロジェクトで上記の3つの方法すべてのバリエーションを使用しましたが、多数のテーブルを移動するには、オプション#2が比較的効率的であることがわかりました。テーブル名が日常的に動的である場合は動的SQLコードが含まれますが、静的である場合は、ロジックを1回記述し、ファイル名のパラメーターを使用して読み取る必要があります。

于 2012-05-18T22:12:01.893 に答える