2010年2月25日

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

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

--
Osamu Shigematsu

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

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




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