我正在尝试在CSV文件中导入60,000或更多行。该代码只能导入5000行。有人能帮我吗?
require_once('connection.php');
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query("INSERT INTO transactions (EntryId_Pk, AccessCode, MobileNumber, TelcoCode, TIN, ORNo, ORAmt, NumOfEntries, ECN, AddedOn) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($data[5])."',
'".addslashes($data[6])."',
'".addslashes($data[7])."',
'".addslashes($data[8])."',
'".addslashes($data[9])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));发布于 2014-02-16 21:58:54
您可能希望使用LOAD DATA MySQL语句。这可能真的很快,因为您不需要将所有内容都读入PHP-land,并让MySQL聪明地处理分配。你可以在PHP中像这样使用它:
// dont use mysql_* anymore in new code
mysqli_query($dblink, '
LOAD DATA LOCAL INFILE "'.$file.'"
INTO TABLE transactions
FIELDS TERMINATED by ","
OPTIONALLY ENCLOSED BY "\'"
LINES TERMINATED BY "\n"
');发布于 2014-02-16 22:23:40
可能是超时错误。尝试设置
set_time_limit(0);在查询中分块导入数据并插入多行,而不是逐行执行,这也是一种很好的做法。
https://stackoverflow.com/questions/21812020
复制相似问题