Access VBAにてテーブルのサイズを取得したい

Anonymous
2014-10-01T10:15:43+00:00

お世話になります。

Access2010

今回、数十万行ある複数のCSVファイルをインポートし、更にそれらのテーブルを結合し

集計したいと考えております。

結合する上で、極力Accessファイルのサイズを大きくさせないようにしたいところです

(上限の2GBを超えないように)。

例えば、CSVファイルA~Cを順にインポートした後のAccessファイルのサイズが以下の

ようになったとします。

 テーブルA 200MB(テーブルAはAccess上200MB)

 テーブルB 500MB(テーブルBはAccess上300MB)

 テーブルC   1GB(テーブルCはAccess上500MB)

※元のAccessファイル自体は800KB程度ありますが、考慮してません。

 また、300MB程度のCSVファイルをインポートすると、Accessファイルのサイズが1.5GB

 ぐらいになったので単純にCSVファイルのサイズ=テーブルサイズとはならないようでした。

インポート後、テーブルAに対して追加クエリでテーブルB、テーブルCを結合した場合、

AccessファイルのサイズはテーブルA(200MB)+テーブルB(300MB)+テーブルC(500MB)

+結合する前のAccessファイルのサイズからテーブルAを引いたサイズ(800MB)になるので、

一時的に1.8GBになってしまいます。

しかし、サイズが一番大きいテーブルCに対して、テーブルAとテーブルBを結合した場合は、

テーブルC(500MB)+テーブルA(200MB)+テーブルB(300MB)+結合する前のAccessファイル

のサイズからテーブルCを引いたサイズ(500MB)になるので1.5GBとなり、前者より後者の方が

大きくならないで済みます。

※実際にはテーブルを追加した都度そのテーブルは削除しますが、最適化しない限りAccessの

 ファイルサイズは減らないという認識です。

そこで質問ですが、上記のことから一番大きいサイズのテーブルに対して他のテーブルを結合

していった方がAccessファイルのサイズを抑えることができそうなのですが、テーブルのサイズを

取得することは可能でしょうか。

それとも、サイズを取得できないような場合は、レコード数をカウントして一番多いテーブル=

一番大きいサイズのテーブル・・・とするのでしょうか。

ご教授の程、宜しくお願い致します。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-10-01T12:14:17+00:00

    MukkuMukuです。

    Access の機能で テーブルごとのサイズ を示すものはないです。

    別件ですが、Access で扱うにはファイルサイズが大きいような気がします。限界値として 2GB ですが、サイズ的には SQL Server などをご利用になったほうが後々よいかと思います。

    インポートせずにリンクするということもありと思います。

    この回答は役に立ちましたか?

    100+ 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2014-10-02T00:56:52+00:00

    MukkuMukuさま

    肝心なことを忘れてました。

    ここ最近質問させて頂いておりましたが、

     ・インポートするCSVファイルは先頭行に不要な文字列があり、2行目が見出し(フィールド名)。

     ・ユーザーにより、CSVファイルのフィールドの並びが異なる。

     ・インポートするCSVファイル名は年月及びユーザーにより異なる(yyyy年mm月_拠点名.csv)。

     ・インポートするCSVファイルはユーザーにより1つだったり複数だったりする。

    上記理由により、いったん2行目のフィールド名を抜き取り、インポート先のテーブルを予め作成し、そこにCSVファイルのデータをインポートしようと考えております。

    なのでリンクをはるのは困難かもしれませんが、もう少し考えてみたいと思います。

    >インポートせずにリンクするということもありと思います。

    Accessを使っていてODBC接続でSQLのリンクテーブルは普通に使っておりましたが、ExcelやCSV、Accessなどをリンクして使ったことがありませんでした。そういえば、外部データに接続するときインポートするかリンクするかの選択がありましたね。大変失礼しました。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2014-10-02T00:25:35+00:00

    MukkuMukuさま

    いつもご回答ありがとうございます。

    テーブルごとのサイズは取得できないのですね。承知しました。

    仰る通り、確かにAccessで扱うには大きすぎるのですが、客先に配布するものを作成しているので客先毎にSQL Server構築まではやらない予定です(2GBの上限はありますが、手軽に使えるようにしたいところです)。

    >インポートせずにリンクするということもありと思います。

    勉強不足で申し訳ございませんが、AとBとCをそれぞれインポートし、それらを追加クエリで結合してDを作り、Dで集計したいと思ってます。

    リンクするってことは、わざわざA~Cをインポートしなくても、Dを作ることが出来るということでしょうか。

    しかも、インポートしない分、Accessファイルのサイズが大きくならない(Dの分のみ)ということになるのでしょうか。

    ちなみに、集計に必要なフィールドは4つなのですが、その4つのフィールドだけをリンクし?Dを作るってことも可能でしょうか。

    ・・・とりあえず上記については自力で調べてみます。

    またご報告させて頂きます。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません