2010年2月25日

[PHP-users 35016]大量データをDBへインポートする処理

以前に”固定長電文の解析”の際はお世話になりました。
absと申します。

----環境----
Win XP SP2
IIS V5.1
PHP V5.2.3 (ISAPで動作)
SQLite V3.3.17

------------

今回その続きの処理の件で、
みなさんにご意見をお聞きしたいと思います。

毎日テキストデータがファイルで送られてくるのですが、
約15000件(1件1行で15000行)超あります。
このデータは、日々増えていきます。(10件/日ぐらいです。)
それらをデータベースに登録する為に
一行づつ読み出し、そのデータを成型し、
SQLを組み立ててINSERTします。

以上の処理をするのに当然そのまま処理をしようとすると
タイムアウトになりエラーになってしまいます。
(というか300件ぐらいは登録できていますが・・・。)

そこで、これらのデータをいかに効率的に且つ
早く処理できるようにするにはどうしたらよいか?
と考え、以下に処理方法の候補を作成してみました。
(処理はPC内で、コマンドラインから立ち上げ)

?、15000行のファイルをまず、300件づつのファイルに分割し、
それらのファイルが何ファイルになったかカウントし、
そのファイル分(カウント分)処理を立ち上げる。

?、15000行のファイルから300件づつ読み込んで処理を行い、
次の処理は、その差分(続きから)からまた300件づつ処理を行う。
これを、最終行(EOF)まで続ける。

?、一時的にINIの設定を変更し、15000行処理できるぐらいの時間まで
タイムアウトにならないようにする。


?と?の課題となっているのは、続きの処理をどのように立ち上げるか?です。
1分づつwindowsのタスクを登録しておくとかしかないのかな?と思っております。
?は、処理が長く続きますので、CPU負荷の心配などが考えられます。

今回は、実際のプログラムとかではなく、
処理方法について皆さんにご教授願いたいと思っております。
もし、”この処理はやめたほうがいい”とかでも結構です。
もちろん、”こんな処理の方法もあるよ”とかいただければうれしいのですが・・・。

あつかましいとは思いますが、
皆さんよろしくお願いいたします。

_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年2月25日 21:46
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/93630
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。