insert文についてご教授ください。
行き詰ってしまいましたので、
どなたか教えてください。
横が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
何か、インサート文でのメモリ開放の関数を使う等、良い方法はないでしょうか?
どなたか、ご教授をお願いいたします。
お礼
yambejpさま おはよう御座います。お世話になっております。 >全データをよみこんで、適合箇所だけ抜き出す やっぱり、そうなりますか・・。 私も似たようなイメージをもっていたのですが、知己不足が手伝い「もっと違うやり方がある?」などと思っていましたが、回答いただき少し安心しました。このまま作業を進めてみたいと思います。有難う御座いました!