我正在使用下面的代碼將CSV文本文件導入到我的表中,但是我的新主機不允許LOAD DATA
命令並迫使我找到導入文件的其他方法。當然,它們在給我一個明確的答案時毫無用處。使用PHP和MySQLi導入CSV替代方法
除了LOAD DATA LOCAL
和LOAD DATA
之外,還有什麼其他方法需要通過PHP/MySQLi將CSV文件導入到我的MySQL表中嗎?
// Query - import CSV file into DB, ignore top 3 lines
$sql= "LOAD DATA LOCAL INFILE '".$import_file."' INTO TABLE `$dbtable`
FIELDS TERMINATED BY '".$fieldseparator."'
LINES TERMINATED BY '".$lineseparator."'
IGNORE 3 LINES
SET TIMESTAMP = '".$local_time."'";
感謝
編輯:
尋找到建議fgetcsv
功能後,我想出了下面的代碼。理論上,它應該可以工作,但代碼似乎會加載直到最終超時而不顯示錯誤。數據庫僅填充單個行條目。
我在做什麼錯在這裏?
if ($import_file) {
// set row counter to 0
$line = 0;
while (($row = fgetcsv($import_file)) !== false) {
// ignore the first 3 rows of the file based on iteration of the counter
if ($line <= 3) {
$line++;
continue;
} else {
// if row count is higher than 3, insert into database
$sql = "INSERT INTO `$dbtable`
(`OPERA_CONF`, `CRS`, `HOLIDEX`, `ARRIVAL`)
VALUES (
'" . $row[0] . "',
'" . $row[1] . "',
'" . $row[2] . "',
'" . $row[3] . "'
)";
// execute query
$mysqli->query($sql);
$line++;
}
}
} else {
echo "\n CSV file could not be found.";
}
你得的phpmyadmin進不去? – Ashish
@Ashish我這樣做,但運行此查詢的腳本綁定到cronjob並應該每15分鐘運行一次。沒有'LOAD DATA'命令我什麼都不能做(或者至少我不知道如何) – Armitage2k