1

LOAD DATA INFILE について約 4500 の質問がありますが、特定の問題に対処するものは見つかりませんでした。

CSV ファイルを MySQL データベースにアップロードするユーザーがいます (私はバックエンドで LOAD DATA INFILE スクリプトを使用しています)。フィールドには、消去する必要がある間抜けな文字が含まれていることがあります。具体的には、スペース、CR、および LF です。

LOAD クエリは次のとおりです。

LOAD DATA LOCAL INFILE '".$csvfile."' INTO TABLE table_name FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES
(@dummy,Field2,Field3,Field4)
SET Field1 = (SELECT ID FROM table_a WHERE Username = 'foo');

コードは問題なく動作します。やりたいことは、ジャンク文字が含まれている可能性のある入力フィールドをクリーンアップすることだけです。REPLACE を使用して SET 行のクリーンアップを簡単に実行できると思います ...これは本当ですか?

SET Field1 = (SELECT ID FROM table_a WHERE Username = 'foo'), REPLACE(Field2,'\r\n','');

私が持っていた別のアイデアは、後続のクエリでこれを処理することでした:

$trimQuery = "UPDATE table_name SET Field2 = TRIM(Field2), Field2 = REPLACE(Field2,'\r\n','')";

だから私の質問は4つです:

  1. ジャンク文字が見つからない場合、入力が壊れますか?
  2. スペースもトリミングしたい場合はどうすればよいですか?
  3. 「\r」しかない場合、スキップされるか失敗しますか?
  4. どういうわけか正規表現を使用するより良い方法はありますか?

ありがとう!!

4

0 に答える 0