• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:accessの読み取りデータ量について)

accessの読み取りデータ量について

このQ&Aのポイント
  • accessの読み取りデータ量について質問させていただきます。扱いたいcsvが5万行×2000列(1Gbyte強)と膨大となっており、excel上でコピーして他のファイルに貼り付けるなど編集作業が一切できない状態となってます。
  • ファイルを開くfopen時点で「イメージサイズが最大許容サイズを超えています」と表示されエラーになります。そこでネットで手段を探したところ、accessは大量のデータ処理に向いているとありました。
  • 最大255列で分割していけるようなので、VBAを学んで挑戦しようと考えているのですが、そもそも自分が扱おうとしているデータ量をaccessで扱えるかが心配です。推測の範囲でもよいので、回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

ファイルの必要な部分を切り出すだけでしたら、 Windowsの場合だとawkあるいはsedあたりでしょうか。 行番号や列番号を特定して切り出せます。 UNIX系のOSが利用できるのでしたら、cut, head, tailを組み合わせる方が簡単です。(Windowsでも相当するツールがあるかも知れませんが) 10GBを越えるような巨大なファイルでも対応できます。 データ処理を含めたプログラムを作るのでしたら、 1GB程度ですので、テキストデータを一気にメモリに読み込んで処理することも可能です。RubyやPythonなどで処理するのが簡単なように思います。 頭から読んでいって処理するのでしたらテキストでデータを持っておき、順番に読み込み計算する。 メモリ上に置いて置けないほど巨大でランダムにデータを取り出す必要が有るのでしたら、SQLiteなどのデータベースソフトと組み合わせる方法をとっています。(Ruby+activerecord+SQLite3を使っています)

noname#244557
質問者

お礼

すごいですね、そんなに色々と方法があるとは知りませんでした!示していただいたソフトの概略を見た限り、かなりいけそうな気がします!がんばって勉強してみます! 回答ありがとうございました。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

大変大雑把ですが日本郵便に郵便番号のCSVファイルがあります。 Ken_All.csv で12MB程度です。 これをAccessで読むと20MBのファイルサイズになります。 約1.7倍ですので、そちらのファイルだと1.7GBの計算になります。 Accessはファイルサイズの限界が2GBですので、 Access内部でのワークスペースも考慮すると無理だと思います。 (読み込ませたとしても後の加工ができない) また、フィールド数は255に制限されていますので 2000列のCSVファイルだと無条件に256以降はインポートの際に切り捨てられます。 今2002・2010でしか試せない環境にあるので何とも言えませんが、 2013でも読み込みの開始位置を1~250、251~500・・・とは してくれないと思います。 なので、あえてAccessで試そうとは思わないほうが良いと考えます。 他のちゃんとしたデータベースでもカラム数は http://d.hatena.ne.jp/GARAPON/20110809/1312880645 のように2000列をいっぺんには無理です。 何とかして分割しなくてはいけませんが、 「C言語におけるファイル入出力の高速化」 http://www.cc.u-tokyo.ac.jp/support/press/news/VOL8/No5/data_no1_0609.pdf ↑直リンです。 を眺めると大きなファイルサイズでも読み書き出来そうな雰囲気ですよ。 (違っていましたらゴメンなさい) C は全くわかりませんので、この辺にて。

noname#244557
質問者

お礼

やはりaccessでも無理そうですか…。リンク先に関しては非常にありがたいです!どうやら、まだまだ探し方が足りなかったようですね。色々と方法を探してみたいと思います。 回答ありがとうございました!

関連するQ&A

専門家に質問してみよう