通过PHP将CSV导入MySQL
我想导入一个CSV文件,看起来像:通过PHP将CSV导入MySQL,php,mysql,sql,csv,Php,Mysql,Sql,Csv,我想导入一个CSV文件,看起来像: "Berichtname:" "Test2" "Berichtstatus:" "Die Berichterstellung ist erfolgreich beendet." "Name" "Wert" "Einheit" "Objektbeschreibung" "Zustand" "Typ" "L/S" "Parameter" "Min" "Max" "B4'TAA3'MtEF'AFGl05'C
"Berichtname:" "Test2"
"Berichtstatus:" "Die Berichterstellung ist erfolgreich beendet."
"Name" "Wert" "Einheit" "Objektbeschreibung" "Zustand" "Typ" "L/S" "Parameter" "Min" "Max"
"B4'TAA3'MtEF'AFGl05'CumEg" "99,7" "kWh" "kum. Wirkenergie" "" "Real Zahl" "5/3" "PrVal" "-340282200000000000000000000000000000000.00" "340282200000000000000000000000000000000.00"
"B4'TZ03'MtrEl'MtrEl05'Pwr" "10" "kW" "Wirkleistung" "S" "Real Zahl" "5/3" "PrVal" "-340282200000000000000000000000000000000.00" "340282200000000000000000000000000000000.00"
我已尝试导入该文件,但没有成功。。我想跳过前6行,只添加最后两行
有人能帮我吗
<?php
//database connection details
$connect = mysql_connect('XXXXXXXXXXX','XXXXXXXXXXXX','XXXXXXXXXXX');
if (!$connect) {
die('Could not connect to MySQL: ' . mysql_error());
}
//your database name
$cid =mysql_select_db('XXXXXXXXXXX',$connect);
// path where your CSV file is located
define('CSV_PATH','');
// Name of your CSV file
$csv_file = CSV_PATH . "export.csv";
if (($getfile = fopen($csv_file, "r")) !== FALSE) {
$data = fgetcsv($getfile, 1000, ",");
while (($data = fgetcsv($getfile, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$result = $data;
$str = implode(",", $result);
$slice = explode(",", $str);
$col1 = $slice[0];
$col2 = $slice[1];
$col3 = $slice[2];
// SQL Query to insert data into DataBase
$query = "INSERT INTO daten(sensor,wert)
VALUES('".$col1."','".$col2."')";
$s=mysql_query($query, $connect );
}
}
}
echo "File data successfully imported to database!!";
mysql_close($connect);
?>
您是如何尝试导入此文件的?你能发布你的php脚本吗:)有一个选项可以忽略6行代码;那么问题出在哪里呢?为什么要内爆然后分解每一行的数据?变量之间的选项卡。由于它是一个选项卡分隔的文件,请使用带“\t”分隔符的fgetcsv
,而不是默认的“,”,这样就不需要再内爆和分解了