使用PHP和MySQLi导入CSV替代方法
我正在使用下面的代码将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.";
}
您将不得不使用PHP逐行读取CSV文件的内容并将它们插入表中。
看一看http://www.readmyviews.com/import-csv-data-mysql-using-php/
代码粘贴在这里的易用性:
$filepath = "C:\wamp\www\importdata\sample.csv";
if (($getdata = fopen($filepath, "r")) !== FALSE) {
fgetcsv($getdata);
while (($data = fgetcsv($getdata)) !== FALSE) {
$fieldCount = count($data);
for ($c=0; $c < $fieldCount; $c++) {
$columnData[$c] = $data[$c];
}
$option_name = mysqli_real_escape_string($connect ,$columnData[0]);
$option_value = mysqli_real_escape_string($connect ,$columnData[1]);
$import_data[]="('".$option_name."','".$option_value."')";
// SQL Query to insert data into DataBase
}
$import_data = implode(",", $import_data);
$query = "INSERT INTO option_data_master(option_name,option_value) VALUES $import_data ;";
$result = mysqli_query($connect ,$query);
感谢那个Nick,只是不确定'option_data_master(option_name,option_value)'的用途是什么?那些列名是?你可以看看我发布的代码吗?谢谢 – Armitage2k
没问题:)你的代码看起来不错。您尝试导入的CSV文件有多大? –
小巧,最多500行,每行25列。整个事情只是加载,然后停止没有任何错误消息。 – Armitage2k
你得的phpmyadmin进不去? – Ashish
@Ashish我这样做,但运行此查询的脚本绑定到cronjob并应该每15分钟运行一次。没有'LOAD DATA'命令我什么都不能做(或者至少我不知道如何) – Armitage2k