PHP - 导入到MySQL数据库时跳过csv的第一行 [英] PHP - Skip the first row of csv when importing to MySQL Database
问题描述
这些代码将CSV文件的内容导入数据库。
These codes import the contents of a CSV file to the database.
$databasehost = "localhost";
$databasename = "test";
$databasetable = "sample";
$databaseusername ="test";
$databasepassword = "";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "filename.csv";
$addauto = 0;
$save = 1;
$outputfile = "output.sql";
if(!file_exists($csvfile)) {
echo "File not found. Make sure you specified the correct path.\n";
exit;
}
$file = fopen($csvfile,"r");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo "File is empty.\n";
exit;
}
$csvcontent = fread($file,$size);
fclose($file);
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$lines = 0;
$queries = "";
$linearray = array();
foreach(split($lineseparator,$csvcontent) as $line) {
$lines++;
$line = trim($line," \t");
$line = str_replace("\r","",$line);
$line = str_replace("'","\'",$line);
$linearray = explode($fieldseparator,$line);
$linemysql = implode("','",$linearray);
if($addauto)
$query = "insert into $databasetable values('','$linemysql');";
else
$query = "insert into $databasetable values('$linemysql');";
$queries .= $query . "\n";
@mysql_query($query);
}
@mysql_close($con);
if($save) {
if(!is_writable($outputfile)) {
echo "File is not writable, check permissions.\n";
}
else {
$file2 = fopen($outputfile,"w");
if(!$file2) {
echo "Error writing to the output file.\n";
}
else {
fwrite($file2,$queries);
fclose($file2);
}
}
}
echo "Found a total of $lines records in this csv file.\n";
这是它的工作原理。
管理员将收到一个Excel电子表格.xls)文件,并将其保存为.csv文件。文件的第一行将是Excel电子表格的标题。
示例:姓名,电子邮件,联系电话,国家,地址标题。
This is how it works.
The administrator will receive an excel spreadsheet (.xls) file and will save it as .csv file. And the first row of the file will be the 'headers' of the excel spreadsheet.
Example: Name, Email, Contact number, Country, Address headers.
所以在将CSV文件的内容导入到数据库之前,我希望跳过第一行。这意味着导入内容将从CSV文件的第二行开始。
So before importing the contents of the CSV file to the database, i want the first row to be skipped. Which means that the importing of contents will start at the second row of the CSV file.
我可以知道我应该编辑哪部分代码,以及我应该编辑哪些代码?
对不起,因为我是编程PHP 。
May i know which part of codes should i edit and what should i edit it to?
Sorry, as i'm new to programming PHP.
提前感谢!
推荐答案
工作。在您的 foreach
循环拆分
之前,您的 $ csvcontent
结果数组到 $ allLines
。然后使用 array_shift
删除此数组的第一个元素(函数也返回此元素,但我们不需要它):
A little change will to the job. Before your foreach
loop split
your $csvcontent
and safe the resulting array to $allLines
. Then use array_shift
to remove the 1st element of this array (the function also returns this element, but we don’t need it here):
$allLines = split($lineseparator,$csvcontent);
array_shift($allLines); // removes the 1st element
foreach($allLines as $line) {
[...]
这篇关于PHP - 导入到MySQL数据库时跳过csv的第一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!