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

shige02 @ mac.com shige02 @ mac.com
2010年 2月 25日 (木) 21:51:25 JST


単に BEGIN してないから遅いだけでは?
あとは、そのテキストデータとやらが何だか知りませんけど、sqlite に直接 CSV 食わせるとかでもいいんじゃないですか?

On Feb 25, 2010, at 9:46 PM, abs wrote:

> 以前に”固定長電文の解析”の際はお世話になりました。
> 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 @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3

-- 
Osamu Shigematsu



PHP-users メーリングリストの案内