我正试图确定为什么这两个LOAD DATA INF会产生不同的结果。下面的两个查询都导入数据。
在带有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';
通过执行以下操作解决此问题:
$mysqli->query("LOAD DATA INFILE '" . $file . "' INTO TABLE myTable FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''"' LINES TERMINATED BY ''n'");