![](/img/trans.png)
[英]How can I insert a lot of records into database all at once from a textarea where every line of it is a record?
[英]How can I insert a lot of data into mySQL database at once?
我將文本文件中的數據插入到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條目,一切正常。 但是,如果我要插入更多數據,則會發生我的頁面空白並且沒有任何內容插入到我的數據庫中。
什么可能導致這個問題,我該如何解決?
由於您已經有文本文件,因此請使用以下查詢
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
使用VALUES語法的NSERT語句可以插入多行。 為此,請包含多個列值列表,每個列值都括在括號內並用逗號分隔。 例:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
您應該使用多插入語法,而不是在循環內運行多個查詢。 例:
INSERT INTO data (id,name,date,place) VALUES (:id1,:name1,:date1,:place1), (:id2,:name2,:date2,:place2), (:id3,:name3,:date3,:place3);
查看有關使用預准備語句執行多插入的文章 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.