簡體   English   中英

如何一次將大量數據插入mySQL數據庫?

[英]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

使用mysql LOAD DATA INFILE

請參閱本答案

如果你使用PDO或類似的循環,你做錯了,慢。

使用VALUES語法的NSERT語句可以插入多行。 為此,請包含多個列值列表,每個列值都括在括號內並用逗號分隔。 例:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

如何在MySQL中進行批量插入

您應該使用多插入語法,而不是在循環內運行多個查詢。 例:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM