3

嗨,我知道这个问题不仅是为了我,也是为了每个使用 mysql LOAD DATA INFILE 的人。

我只想知道为什么每次使用加载数据文件导入数据时都会收到这个(“”)双引号?来自 csv 的数据已成功添加到数据库中,但例如值中有一个双引号。例如。

"值1" | "值2" | “价值3”

有什么帮助吗?这是我的mysql脚本。

echo $mysql = "LOAD DATA LOCAL INFILE '".$path ."' 
        REPLACE INTO TABLE table
        FIELDS 
            TERMINATED BY ',' 
        LINES 
            TERMINATED BY '\\n'
        IGNORE 1 LINES 
        (`column1`, `column2`, `column3`, `column4`..)";

        $query = mysqli_query($link, $mysql) or die(mysqli_error($link));

谢谢

4

1 回答 1

5

我从您的问题中猜测您的 infile 值与此类似,

"column1","column2","column3","column4"
"column1a","column2a","column3a","column4a"

由于在您的 mysql 语句中您只声明字段由 a 终止,,因此它将读取一个值,直到 mysql 引擎找到 a ,,因此是 qoutes。

用于声明字段是否被某些东西包围的 mysql 语法如下所示;

FIELDS ENCLOSED BY '"'

您的新查询看起来像,

"LOAD DATA LOCAL INFILE '".$path ."' 
    REPLACE INTO TABLE table
    FIELDS 
        TERMINATED BY ',',
        ENCLOSED BY '"'
    LINES 
        TERMINATED BY '\\n'
    IGNORE 1 LINES 
    (`column1`, `column2`, `column3`, `column4`..)"

这告诉 mysql 引擎查找 之间的字符"并将该值作为字段值。

您可以在 mysql 网站上阅读有关它的更多信息。

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

希望这有帮助!

于 2013-03-12T13:50:49.870 回答