我正在尝试在我的内容管理系统中创建一个功能,用户可以在其中上传CSV文件,然后将其解析并将数据放入MySQL数据库中。为此,我使用文件输入和此SQL查询。
$sql = "LOAD DATA LOCAL INFILE '".$_FILES["file"]["tmp_name"]."'
INTO TABLE persons
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r'
(id, name, email, contacts)";
这适用于我在计算机上创建的.csv
文件,但不是CSV文件的字段以分号结尾,并且行以\r
结尾。现在我希望此查询适用于所有.csv
个文件。否则,此功能将无法在我的CMS中实现。有没有什么方法可以让这个有.csv
文件的工作有其他字段和行结尾? (例如\ n,\ r \ n ,,,)
答案 0 :(得分:1)
尝试LINES TERMINATED BY '\r\n'
这适用于以“\ r \ n”结尾的文件,但也包含“\ r”和“\ n”。来自MySQL文档:
TIELINATED BY,LINES STARTING BY,LINES TIRINATED BY 值可以是多个字符。例如,要写行 由回车/换行对终止或读取a 包含这些行的文件,指定LINES TERMINATED BY'\ r \ n' 子句。
[EDITED]
您还需要将\r\n
添加到子句FIELDS TERMINATED BY
中,以告知解析器不要在第一行的最后一个字段中包含行尾符号。所以
FIELDS TERMINATED BY ';, \t\r\n'
在大多数情况下都有效。