我将文本文件中的数据插入到mySQL数据库中,一次插入大约6000个或更多条目。
try {
$sql = "INSERT INTO data (id,name,date,place) values(?,?,?,?) ";
$q = $pdo->prepare($sql);
foreach($data as $row) {
$q->execute(array($row['id'], $row['name'], $row['date'], $row['place']));
}
}
catch (PDOException $pe) {
echo $pe->getMessage();
}
catch (Exception $e ) {
echo $e->getMessage();
}
我尝试了3000个条目,一切正常。但是,如果我要插入更多数据,则会发生我的页面空白,并且没有任何内容插入到我的数据库中。
什么可能导致这个问题,我该如何解决?
答案 0 :(得分:3)
由于您已有文本文件,请使用以下查询
LOAD DATA INFILE 'file/path/to/file.txt'
INTO TABLE table-name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
确保文件中的数据与表格行一致。
在此处阅读更多https://dev.mysql.com/doc/refman/5.6/en/load-data.html
答案 1 :(得分:2)
答案 2 :(得分:1)
使用VALUES语法的NSERT语句可以插入多行。为此,请包含多个列值列表,每个列值都括在括号内并用逗号分隔。例如:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
答案 3 :(得分:1)
您应该使用多插入语法,而不是在循环内运行多个查询。例如:
INSERT INTO data (id,name,date,place) VALUES (:id1,:name1,:date1,:place1), (:id2,:name2,:date2,:place2), (:id3,:name3,:date3,:place3);
查看this article关于使用预准备语句进行多次插入的信息。