Microsoft 製品に組み込まれている Visual Basic の実装。
MukkuMukuです。
Access の機能で テーブルごとのサイズ を示すものはないです。
別件ですが、Access で扱うにはファイルサイズが大きいような気がします。限界値として 2GB ですが、サイズ的には SQL Server などをご利用になったほうが後々よいかと思います。
インポートせずにリンクするということもありと思います。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
お世話になります。
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ファイルのサイズを抑えることができそうなのですが、テーブルのサイズを
取得することは可能でしょうか。
それとも、サイズを取得できないような場合は、レコード数をカウントして一番多いテーブル=
一番大きいサイズのテーブル・・・とするのでしょうか。
ご教授の程、宜しくお願い致します。
Microsoft 製品に組み込まれている Visual Basic の実装。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
MukkuMukuです。
Access の機能で テーブルごとのサイズ を示すものはないです。
別件ですが、Access で扱うにはファイルサイズが大きいような気がします。限界値として 2GB ですが、サイズ的には SQL Server などをご利用になったほうが後々よいかと思います。
インポートせずにリンクするということもありと思います。
MukkuMukuさま
肝心なことを忘れてました。
ここ最近質問させて頂いておりましたが、
・インポートするCSVファイルは先頭行に不要な文字列があり、2行目が見出し(フィールド名)。
・ユーザーにより、CSVファイルのフィールドの並びが異なる。
・インポートするCSVファイル名は年月及びユーザーにより異なる(yyyy年mm月_拠点名.csv)。
・インポートするCSVファイルはユーザーにより1つだったり複数だったりする。
上記理由により、いったん2行目のフィールド名を抜き取り、インポート先のテーブルを予め作成し、そこにCSVファイルのデータをインポートしようと考えております。
なのでリンクをはるのは困難かもしれませんが、もう少し考えてみたいと思います。
>インポートせずにリンクするということもありと思います。
Accessを使っていてODBC接続でSQLのリンクテーブルは普通に使っておりましたが、ExcelやCSV、Accessなどをリンクして使ったことがありませんでした。そういえば、外部データに接続するときインポートするかリンクするかの選択がありましたね。大変失礼しました。
MukkuMukuさま
いつもご回答ありがとうございます。
テーブルごとのサイズは取得できないのですね。承知しました。
仰る通り、確かにAccessで扱うには大きすぎるのですが、客先に配布するものを作成しているので客先毎にSQL Server構築まではやらない予定です(2GBの上限はありますが、手軽に使えるようにしたいところです)。
>インポートせずにリンクするということもありと思います。
勉強不足で申し訳ございませんが、AとBとCをそれぞれインポートし、それらを追加クエリで結合してDを作り、Dで集計したいと思ってます。
リンクするってことは、わざわざA~Cをインポートしなくても、Dを作ることが出来るということでしょうか。
しかも、インポートしない分、Accessファイルのサイズが大きくならない(Dの分のみ)ということになるのでしょうか。
ちなみに、集計に必要なフィールドは4つなのですが、その4つのフィールドだけをリンクし?Dを作るってことも可能でしょうか。
・・・とりあえず上記については自力で調べてみます。
またご報告させて頂きます。