トップページ⇒tech
23コメント5KB

ファイルへのアクセス方法@Perl初心者

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
PerlでCVSファイルへアクセスするプログラムを作っています。
ちょっとしたデータベースファイルなのですが、全レコードは
8000件あります。

あるキーワードが入っているレコードを探すのには、
どのようなプログラムが良いですか?お知恵を拝借願います。

(今は、8000件を上から探しているプログラムになっております。
その為、時間がかかってしょうがないのです。
これからもレコードは増えていく一方なので、レコードが増える
分、検索時間も増えていく形になっています。)
0002デフォルトの名無しさんNGNG
Perlスレッドで聞けばいいのに・・・
WebProg板にゆけばいくらでもあるんだから。
0003デフォルトの名無しさんNGNG
Cで書き直せ
0004デフォルトの名無しさんNGNG
しーけんしゃるさーち?
0005デフォルトの名無しさんNGNG
CVS? ソースコード管理の話か。
まぁいいけどGREPつかえ。
0006デフォルトの名無しさんNGNG
無理
0007デフォルトの名無しさんNGNG
無理なの?
0008デフォルトの名無しさんNGNG
1には無理。
0009デフォルトの名無しさんNGNG
8にはできるの?
0010デフォルトの名無しさんNGNG
コマソドライソから、
grep あるキーワード < 元.cvs > 結果.cvs
0011棄教者 ◆witdLTi2 NGNG
どういうデータを取り出したいかにもよりますがとりあえず2分木検索でも
やってみたらどうですか? 順次検索で逝くとO(n)かかるのがO(log n)でできますよ
0012初心者NGNG
>>11
「2分木検索」って、いったん全部読んで、2 分木構造を作るんじゃないん
ですか?
それなら順次検索のほうが速いような気がするんですが。

私は何か思い違いをしているのでしょうか?

0013デフォルトの名無しさんNGNG
11 が言いたいのは
2分探索じゃないの?
あらかじめ 整列させておいて、
真ん中のレコードと比較するやつ。
キーになる要素が一つしかないので
あれば、有効のような気もする。
0014デフォルトの名無しさんNGNG
ageちった。 鬱だ
0015デフォルトの名無しさんNGNG
>>1
一番まっとうな回答としては
「ちょっとしたデータベースファイル」ではなく
現在の実用に耐えるデータベースでも導入しろ
だな(Acessとか無料のDBとかOracleは無理に導入する規模ではない)

まっとうでない回答としては
1. 固定長レコードにしろ
2. インデックスファイルを作れ
3. あらかじめファイルをキーワードでソートしておけ
結局csvの利点である汎用性をある程度犠牲にしないと高速化は無理
0016棄教者 ◆witdLTi2 NGNG
>>11-12

>>1を読まずにカキコしていましたね すまそ
>あるキーワードが入っているレコードを探すのには、
>どのようなプログラムが良いですか?お知恵を拝借願います。
探すだけなら「二分木」じゃなくて「二分」検索ですね

てっきりレコードを一回読み込んで*複*数*回*の処理をすると思っていたんですよ.
一回だけ探してそれをレポートして終わりなら
木を構成するだけめんどくさいですね

データベース導入とか言う意見がありますがぼくも同意見です
ぼくもデータベースの管理をPerlでやっていたのですが
あまりにもデータが多くなってきたので
PostgreSQLを導入して DBI / DBD::Pg を使って
PerlからPostgreSQLなコマンドを送り込んでいます
0017デフォルトの名無しさんNGNG
どうして単発質問スレなのに叩かれないんだ?
0018デフォルトの名無しさんNGNG
どうかな。俺の意見としては、十万件程度まではテキストファイルが
データベース役やってもかまわないと思うが。
0019デフォルトの名無しさんNGNG
awk
0020デフォルトの名無しさんNGNG
perl
0021perlerNGNG
他のパソコン上の共有ディレクトリ内にあるファイルを、perl上から
読み書きしなければならないのですが、どのようにアクセスすれば良いのでしょうか?
0022デフォルトの名無しさんNGNG
そのファイルを open すれば良いだけだ。
0023デフォルトの名無しさんNGNG
>>21
\\他のパソコン\パス
をオープンしろ
■ このスレッドは過去ログ倉庫に格納されています