ご存じかもしれませんが、Access データベース ファイルのサイズは 2 GB に制限されているため、すべての情報を 1 つのファイルに保存することはほとんど不可能です。かろうじて収まったとしても、それだけの情報を 1 つの Access データベース ファイルに保持すると、処理が遅くなる可能性があります。
データの「形状」によっては、Access に他の制限があり、特定の状況で問題が発生する可能性があります。たとえば、テーブル (またはクエリ) は 255 列に制限されています。まだ行っていない場合は、先に進む前にAccess の仕様を確認してください。
いずれにせよ、別のデータベースをバックエンドとして使用することを検討してください。SQL Server Express Edition の 1 つのデータベースにはデータが大きすぎる場合もあります (私が思い出すように、データベースあたりの合計サイズは最大 10 GB です)。ダース (またはそれ以上?) を超える Access データベース。
別のデータベース バックエンドを使用している場合でも、(ODBC リンク テーブルを介して) クエリおよびレポート ツールとして Access を使用できる場合があることに注意してください。
再編集: コメント
あなたの説明に基づいて、リージョン間でクエリを実行する必要がない場合 (そして、 「決して」は非常に長い時間であることを覚えておいてください™ )、8000 ファイルのアプローチが実行可能になります。ただし、クエリを実行するたびに、対応する CSV データをインポートすることは必ずしもお勧めしません。代わりに、Tom と HansUp の両方の回答からアイデアを借ります。
プラン "A":まず、CSV ファイル自体に対して直接クエリを実行して、それがニーズに十分に対応できるかどうかを確認します。CSV ファイルにリンクされたテーブルを作成し、いくつかの典型的なクエリを実行することで、それをテストできます。Tom が述べたように、CSV のリンクされたテーブルにはインデックスを作成できないため、クエリが遅すぎるとわかった場合は、プラン "B" に進む必要があります。
プラン "B": CSV データをインポートする必要がある場合は、プロセスの自動化に役立つ HansUp の提案を使用DoCmd.TransferText
することをお勧めします。クエリごとに特定の CSV ファイルをインポートするのは無駄に思えるので、最大 8000 個.accdb
のファイルを作成してから、次のようなクエリを使用することを検討してください。
strSQL = _
"SELECT * FROM TableName " & _
"IN ""C:\__tmp\region12345.accdb"" " & _
"WHERE StartDate BETWEEN #2013-05-10# AND #2013-05-15#"
...コードで代用できる場所