我试图确定为什么这两个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';
答案 0 :(得分:0)
解决这个问题:
$mysqli->query("LOAD DATA INFILE '" . $file . "' INTO TABLE myTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");