使用MySQL LOAD DATA INFILE导致基于相同执行查询的不一致结果

时间:2013-02-21 19:04:41

标签: php mysql sql

我试图确定为什么这两个LOAD DATA INFILE会产生不同的结果。以下两个查询都会导入数据。

在第一个查询w / exec中,不会从表字段中删除引号。第二个查询按预期删除引号。我已经尝试了exec查询的所有变体 - 同样的问题......例如,我试过:

'\"' - (as is now)

"' . " . '"

'"' - (this of course won't work because it needs escaping \ )

'" . " . "' - (this also needs escaping)

\"\"

还有很多其他变种。

示例输出(在表格字段中):

查询1:“Joe Smoe”

查询2:Joe Smoe

我是否正在查看错误的问题?我也尝试过多次重写该查询,但确定我已正确编写了查询。

我正在针对完全相同的数据运行这些查询。它们都加载数据,但第一个查询无法从字符串中删除“(引号)”。

查询1

exec(mysql -u root -e \"USE mydb; LOAD DATA INFILE '" . $file . "' INTO TABLE  myTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'\"; ");

查询2

LOAD DATA INFILE 'filepath' INTO TABLE myTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

1 个答案:

答案 0 :(得分:0)

解决这个问题:

$mysqli->query("LOAD DATA INFILE '" . $file . "' INTO TABLE  myTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");