みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESSでの大容量データインポート

2.6Gもある大きなデータベースをテキストファイルでもらったので、エクセルでは開けないのでACCESSを使おうと思い、ファイル-外部データの取り込み-インポート で取り込もうとしたら、「ファイル<ファイル名>にはデータが含まれていません。」とエラーメッセージが出てしまいます。それで、テキストエディタでこのファイルを先頭の容量の限界まで読める分だけ読み込んでそれをそのまま保存して、同様にACCESSで読み込もうとすると今度は成功します。だけど、これでは元のデータの1%くらいしか読めません。何で、データは確かに存在しているのにこのようなエラーメッセージが出るのでしょうか。どなたかわかる方がいらっしゃったら教えてください。

投稿日時 - 2009-08-05 17:28:50

QNo.5184222

困ってます

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

#2です。
>やりたいことは、その中から分析に必要な1000万行と4列のデータを取り出すことで
この程度なら大騒ぎをしないで、VB(VBAが手軽)プログラムで、
テキストファイルを読むー多分Splitで項目に分離ー列(項目)に関する条件(決った列だけと思うが)+行に関する条件(指定値より大であるものとか、3つおきにデータを拾うなど)ー新しいファイルに書き出す
を繰りかえせば良い。
かかる時間については数千万レコードは時間がかかって使い物にならないかどうか、やった経験も無くわからない。
プログラムそのものは十数行で済むだろう。
WEB(Googleなど)にでも、
テキストファイルを開く VBA
テキストファイルを読む VBA
Split VBA
CSVファイルを書く VBA
などでコード例が出ると思う。
色々やり方はあっても、全体使用(処理)時間的には、この質問の場合の問題程度では、シーケンシャルファイルを読むのが一番処理時間が少ないはず。
ーー
常識的にはデータをもっと減らしても分析結果に影響しないのでは。
画像データや動きのあるものを記述するデータでなければ、分析にそんなにデータ数は要らないとおもうが。

投稿日時 - 2009-08-06 12:40:35

お礼

知りませんでした。VBAでやる方法もあったんですか!ファイル10分割ではかなり面倒なので、是非挑戦してみます。

投稿日時 - 2009-08-06 18:46:43

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

エクセルのバージョンが書いてないが、2007でも開けませんか。
2007ではないのかな。
ACCESSのバージョンも質問異は書くものだ。
http://office.microsoft.com/ja-jp/excel/HA100738731041.aspx#FileFormats
>Excel 2007 では 2 GB に拡大されました。
途中まででも読み込まないかな。
読み込んだあとどういうことがしたいのか参考までに書いて質問するものだ。
テキストファイルはどんな言語でもたやすく読めるのでプログラムを勉強することだな。2、3にテキストやCSVファイルを分割するプログラムは簡単。
データは理系のデータなのかな。
Mdbファイルとして読み込むのは(何分割かの一部にはなっても)少し勉強すればコードはわかる。その後の処理が問題だ。
ーー
http://office.microsoft.com/ja-jp/access/HA102188641041.aspx
>Access 2007 ファイルの最大サイズは 2 GB です
ーー
Googleで「ACCESS ファイル容量 制限」で照会すれば
http://q.hatena.ne.jp/1155563074
など色々出てくる(2007のことではないものあり注意。)
読んでみたら。

投稿日時 - 2009-08-05 23:30:02

お礼

ありがとうございます。すいません、ACCESSのVersionを書かないと駄目ですね。2003です。2007へのUpgradeを考えて見ますが、ちょっと私の手には負えないかもしれません。
読み込もうとしたデータは、2000万行×17列のデータが入っているテキストファイルです。やりたいことは、その中から分析に必要な1000万行と4列のデータを取り出すことで、もともとエクセルでやろうと思ったのが、読み込めなかったんで、「じゃあ、ACCESSで」と思ったんですが、だめでした。とりあえず、テキストファイルを行で分割するソフトを手に入れて、200万行のファイルを10個作って読み込みました。データの処理はRでやる予定だったので、その後はRで結合させようと思います。勉強になりました。

投稿日時 - 2009-08-06 09:57:48

ANo.1

今のバージョンはよく知らないけど、昔のaccessはファイルサイズに2Gの制限があった。
そのあたりで引っかかっているんじゃないかな。
ほかのDBを使ったほうがよいと思う。

どうしてもアクセスで挑戦したいなら、、
ファイルをFSOかなんかで読んで、
分散させたMDBにADOなどで1行ずつ追加していって、
リンクテーブルをいっぱいつくって、、、
気が遠くなる話ですね。

投稿日時 - 2009-08-05 17:55:45

お礼

早速、ありがとうございます。それは知りませんでした!2Gが限界なんですね! だとすると他のDBか、DBを分散するしかないんでしょうね・・・・・ FSOという言葉も初めて知りました。これって、ファイルを2分割とかするソフトなんでしょうか・・・?勉強してみます。
ありがございました。

投稿日時 - 2009-08-05 21:17:50

あなたにオススメの質問