LINES TERMINATED BY和FIELDS TERMINATED BY的多种可能性 - MySQL

时间:2014-11-12 10:56:16

标签: php mysql csv

我正在尝试在我的内容管理系统中创建一个功能,用户可以在其中上传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 ,,,)

1 个答案:

答案 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'

在大多数情况下都有效。