プロが教える店舗&オフィスのセキュリティ対策術

行き詰ってしまいましたので、
どなたか教えてください。

横が15件、縦が1万件程あるCSVファイルのデータを、
下記のような形で取得しました。
array(11427) {
[0]=>
array(16) {
[0]=>
string(4) "○△×…"
[1]=>
string(8) "○△×…"
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(29) "○△×…"
[5]=>
string(0) ""
[6]=>
string(0) ""
[7]=>
string(1747) "○△×…"
[8]=>
string(4) "○△×…"
[9]=>
string(4) "○△×…"
[10]=>
string(0) "○△×…"
[11]=>
string(55) "○△×…"
[12]=>
string(55) "○△×…"
[13]=>
string(55) "○△×…"
[14]=>
string(43) "○△×…"
[15]=>
string(63) "○△×…"
}
   ・
   ・
   ・

ところどころ1000文字を超えるデータがあり、php.iniのmemori_limitを64Mまで増やし、配列には格納する事は出来たのですが、
上記配列を下記のような形でインサートしようとしたところ、
5000件程しかデータベースに格納されません。

for($i=0; $i<count($data) $i++) {
$sql = insert into sample (
seq,
id,
data1,
data2,
data3,
data4,
data5,
data6,
data7,
data8,
data9,
data10,
data11,
data12,
data13,
data14
)
values
(
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
);
$stmt = $db->prepare($sql);
$db->execute($stmt, $data[$i]);
}
5000件までしかデータが入らない等といったmysqlの制限なのかは分かりませんが、
たまに下記のようなメモリーオーバーのエラーが、PERE上で起きているような表記がでてしまいます。
Allowed memory size of XXXX bytes exhausted xxx PERE.php

何か、インサート文でのメモリ開放の関数を使う等、良い方法はないでしょうか?
どなたか、ご教授をお願いいたします。

A 回答 (1件)

mysql_query()で送ってみては?



http://www.php.net/manual/ja/function.mysql-quer …
    • good
    • 0
この回答へのお礼

返事が遅れてしまいまして、申し訳ございませ。

親切なご対応、大変ありがとうございました。
やはりPEARでやりたかったのもありまして、
結果自力ではありますが、解決いたしました。

ありがとうございました。

お礼日時:2008/10/09 01:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!