- ベストアンサー
固定長テキストファイルの読み込みについて
初めて質問します。 VC++6を使用して、以下のことを行おうと思っていますがどのようにすればよいのかわかりません。 固定長テキストファイル数千レコードのデータを、データベース風にSQL文を発行して該当のレコードのみを抽出するようなことは出来ないのでしょうか? その固定長テキストファイルには、キーとなる項目が存在します。 もし抽出が可能であるならば、追加や更新の方法もご教授していただけたらお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
テキストファイルをSQL形式で読み込むなら shigatsuさんも書かれている通りにODBC経由で の方が楽だと思います。 がしかしODBC経由だとはっきりいって遅いです。 1レコードサイズが何バイトかはわかりませんが 仮に1レコード1024バイトとしたとき 5000件データがあってもオンメモリで5Mほどです。 現状のPCではメモリを豊富に載せてあるので特に問題は ないと思います。 で、これを、SQLと同じくselect時にファイルをオープンし ファイルごとメモリに保存し、ファイルをクローズする。 そして、必要なものを別のメモリに確保するほうが楽で す。 更新は修正があったもの検索結果データに書き込む commit時は元のデータのメモリを更新し ファイルをseekして書き込む roolbsck時は、元のデータを検索結果データに書き込む select終了のコマンドでメモリを開放する といったほうが楽でしょう 削除は処理内容としては更新と同じですが 削除したレコードが検索結果にわかるようにする commit時は元のデータのメモリから削除し ファイルをseekして削除する 削除は、先頭からスペースにするか、先頭にNULL等削除されたことがわかるようにすればOKだと思いますよ #単に削除したレコード以下をつめるのが面倒なだけです #が... 上記はローカルでのみの処理です。 ネットワーク上で複数からのアクセスがある場合は TCP/IPなどを使ってC/S形式にすればいいかと思います #この場合は、色々と考えなくてはいけませんが #更新中、削除中の場合をどうするか?ですね #この後は、考えてみてください
その他の回答 (1)
- shigatsu
- ベストアンサー率26% (511/1924)
ODBC経由にしたら何とかなりそうなんですが、やったことは無いのでとりあえずヒント程度で。 コントロールパネルにODBCデータソースとかアドミニとかが有ると思いますので、それを使います。 詳細はヘルプを見てください。というか前述の通り私もテキストを使ったことは無いので・・・