これら 2 つの LOAD DATA INFILE が異なる結果を生成する理由を特定しようとしています。以下の両方のクエリは、データをインポートします。
exec を使用した最初のクエリでは、テーブル フィールドから引用符が削除されません。2 番目のクエリは、期待どおりに引用符を削除します。execクエリのすべてのバリエーションを試しました-同じ問題...たとえば、試しました:
'\"' - (as is now)
"' . " . '"
'"' - (this of course won't work because it needs escaping \ )
'" . " . "' - (this also needs escaping)
\"\"
などなどバリエーション豊富。
出力例 (テーブル フィールド):
クエリ 1: "Joe Smoe"
クエリ 2: ジョー・スモー
私は間違った問題を見ていますか?また、クエリを数回書き直そうとしましたが、クエリが適切に記述されていると判断しました。
これらのクエリをまったく同じデータに対して実行しています。どちらもデータをロードしますが、最初のクエリは文字列から " (引用符) を削除できません。
クエリ 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';