Microsoft Access2003を使っています。


クロス集計したクエリをCSVでエクスポートしたいのですが、
「テンポラリファイル用の空き容量が不足しています」
とメッセージが出て実現できません。

MDBファイルの容量は約1GB。
テーブルは1つありカラムは4個ですが、レコードが約2000万。

HDDには1TBくらい空きがあり、メモリは16GB実装。
OSはWin7(64bit)。

解決方法をご教授頂ければ幸いです。
トライして下さる方がいらっしゃいましたら、内々にファイルを送ります。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/02/12 08:47:17
  • 終了:2012/02/19 08:50:04

回答(1件)

id:cj3029412 No.1

dk4130523回答回数19ベストアンサー獲得回数12012/02/12 09:34:00

ポイント200pt

こんにちは、はじめまして。通りすがりのaccess使いです。

Q1. テーブル作成してもダメですか?
Q2. クロス集計する前のレコード数が2,000万件? それとも結果のレコード数が縦に2,000万件? 後者はちょっと考えにくいですが。
Q3. 2,000万件一括でcsv1ファイル、でないとどうしてもダメでしょうか? 分割して複数のcsvファイルで保存する、は、ご質問の場合許容されますか?

私も日々大量のデータ処理で似たような問題に頭を悩ませている者です。
今日2/12(日)夜でよければ試してみます。ダメ元で捨てアドか何か知らせてください。

他4件のコメントを見る
id:miku1973

ありがとうございます。
 
ぜひメールを送ろうと思いましたが、facebookがわかりませんでした。
(twitterはわかりました)

2012/02/12 10:42:18
id:miku1973

すいません、facebookですが無事見つかりました。
後ほどメッセージお送り致します!

2012/02/12 10:48:57
  • id:windofjuly
    うぃんど 2012/02/12 09:52:47
    2000万レコード(1レコード50バイトとしても1GB)はAccessの処理限界です
    データをいくつかに分ける形でクロス集計を実行して、
    出力したCSVをExcelなどで1つにまとめるという作業手順になるでしょう

    データベースのままで扱いたいなら、
    容量制限の少し大きなORACLE XE11g(無料)などに移行する必要があります

    容量制限の少し大きなものとしてはSQL Server 2008 Express Edition(無料)などもありますし、
    容量制限の無いMySQL(無料)やPostgreSQL(無料)などもありますが、
    pivotはAccessとORACLEにしかない機能なので、それぞれかなりの工夫が必要になります
  • id:miku1973
    ありがとうございます。
     
    データを20分割して約100万レコードづつに分けるということも
    考えたのですが、手間がかりそうですね…。
    同じような処理を何回もやるのはつらそうです。
    マクロ化可能かな?
     
    Access2010の64bitだったらいけるかななんて思い購入を検討しましたが、
    どうなんでしょう?
     
    またアドバイスいただければ幸いです。
  • id:windofjuly
    うぃんど 2012/02/12 10:35:51
    64bit版でも制限事項は同じです

    テーブルや各種作業領域などすべてあわせて2GBなので、
    巨大なテーブルに対してクロス集計などが行えないということに変わりはないです

    マクロ化は可能かもしれませんが、
    パラメータ付きのクロス集計クエリを1つ作れば済む話かもしれませんね

    回答者さんがいるので、このへんで失礼

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません