导入CSV时,在每行末尾添加逗号

时间:2015-07-16 15:14:18

标签: php mysql csv import

我对PHP很陌生,需要你帮助解决问题。我将通过以下步骤解释我的问题:

1-我有一个CSV文件,我想用PHP将其导入MySQL数据库。

2-当我在CSV文件的每一行末尾添加逗号时,我可以使用Mysql db中的IMPORT选项导入它。如果不在行尾添加逗号,我无法导入它。

3-我想在我的PHP代码中添加一个新行,它将在每个记录/行的末尾添加逗号,并将导入导入的数据而不会出现任何错误。

这是我的代码:

<?php

//read file
$csvfile=file_get_contents("/samba/import/Tbl_HRList.csv");


$lines = explode(PHP_EOL, $csvfile);
$array = array();
foreach ($lines as $line) {
    $field = str_getcsv($line);
    if ($field[0] != ''){

        $sql="INSERT INTO HR_Tbl (Employee_ID, First Name, Prefix, Surname, Location, Organizational Code, Organizational Unit, Team, Team Code, Function, Function code, T24 Department Code, Date in service (GBI), Company email, End Date Contract, End Date Systems, Temp. Leave Date, Temp. Leave End, Temp. Leave Code)
                VALUES
('$field[0]','$field[1]','$field[2]','$field[3]','$field[4]','$field[5]','$field[6]','$field[7]','$field[8]','$field[9]','$field[10]','$field[11]','$field[12]','$field[13]','$field[14]','$field[15]','$field[16]','$field[17]','$field[18])";

    }

    //insert record to database

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully". PHP_EOL;
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}
else
{
continue;
}
}

$conn->close();
?>

提前致谢 亚历

1 个答案:

答案 0 :(得分:1)

使用Load Data Infile完全放弃上述想法。

您可以让csv行以\n\r\n

终止

您可以让该导入文件的第一行包含或不包含列名。 如果您有列名,则跳过第一行。

如果您在第1行上有列名,那么您可以拥有12列,如果需要,只需使用4列。

这是一个非常灵活的结​​构。看看吧。

https://dev.mysql.com/doc/refman/5.1/en/load-data.html

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  LINES TERMINATED BY '\r\n'
  IGNORE 1 LINES;