私のコードには、次のようなクエリがあります。
$load_query = "LOAD DATA LOCAL INFILE '{$file}' INTO TABLE `{$table}`
FIELDS TERMINATED BY ',' ENCLOSED BY '\"';";
ロードしようとしているファイルに含まれている行の例を次に示します。
"MC318199","06160","1","P","00750","00000","TN598792","04/16/2009","91X"
例の行の最後にかなりの数のスペースがあることに気付くでしょう。これらのスペースはすべて、行を終了する改行文字「\n」の前にあります。問題は、これらのスペースがデータベースに入力されることです。
LOAD DATA INFILE
コマンドの実行時に追加のスペースを削除するにはどうすればよいですか?使用する方法はありますRTRIM
か?
編集
ajrealが提案したように、ファイルを再準備する必要がありました。ファイルが準備された後、データベースに正しく挿入されました。これを実現するために、http: //gabeanderson.com/2008/02/01/unixlinux-find-replace-in-multiple-files/にあるbashスクリプトを変更しました。コードを以下に示します。
#!/bin/bash
for fl in *.txt; do
mv $fl $fl.old
sed 's/[ \t]*$//' $fl.old > $fl
rm -f $fl.old
done