2

*.csv 形式で約 10 GB の巨大なファイルがあります。1960 年から現在までの地域ごとのデータです。ファイルを地域別に分類することができました。約 8000 のリージョンがあり、ファイルをリージョンごとに分割したので、それぞれ約 2 MB の 8000 個のファイルがあります。

各地域のデータを検索するための Access データベース システムを作成する最も効率的な方法は何かと考えていました。それは:

  1. ファイルを地域名ごとに小さなファイル (つまり、地域ごとに 8000 ファイル) に分割し、それらをインポートして毎回アクセスする、または

  2. それらをそれぞれ約 1 GB の一定のサイズに分割し、クエリを実行します。

どちらの場合でも、ファイルを Access にインポートするにはどうすればよいですか?

4

3 に答える 3

2

ご存じかもしれませんが、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#"

...コードで代用できる場所

  • .accdb関心領域に基づく適切なファイルの名前、および

  • 必要な日付範囲。

于 2013-05-27T16:23:47.910 に答える
1

@ Gords と @ HansUps は非常に良い答えです。データに適したバックエンドを使用してください。無料のものには、SQL Express と MySQL が含まれます。企業環境にいる場合は、MS SQL Server のライセンスを持っている可能性があります。

ただし、厳密に Access でこれを行うことを主張する場合は、関連する 2 つのアイデアを次に示します。どちらのアイデアでも、必要に応じて必要なデータにリンクおよびリンク解除 (VBA を使用) する必要があります。


テーブルとして表示できるようにするために、CSV ファイルをインポートする必要はありません。別のデータベースのテーブルと同じようにリンクできます。

  • 良い点: 既存のデータ形式を変更する必要はありません。
  • 欠点: 既存のデータを編集することも、インデックスを作成することもできないため、クエリが遅くなる可能性があります。

または、各 CSV ファイルを独自の Access DB に変換することもできます (VBA を使用してこれを自動化できます)。次に、上記の提案のように、必要に応じてテーブルをリンクおよびリンク解除します。

  • 良い点: 既存のデータを編集したり、インデックスを作成したりできるため、クエリが高速になる場合があります。
  • 欠点: 別のバックエンド DB を使用しないようにするためだけに、非常に多くの作業が必要になります。
于 2013-05-27T17:06:03.053 に答える