1

可変テキスト ファイルからテーブル (SQL サーバー上に存在する) にデータを挿入する方法を知りたいです。

最初に、次のような LOAD DATA INFILE コマンドを使用しようとしました。

mysql --user=user --password=password --database=database<<EOF
LOAD DATA INFILE 'test.txt' INTO TABLE example 
FIELD TERMINATED BY ',' LINES TERMIANATED BY '\n';
EOF

それは働いていた。ただし、ご覧のとおり、テキスト ファイルはこのようにスクリプトで修正されています。だから私はこの構造を第二に考えています。

cat "${FILE}" | while read line ; do
 #a valid INSERT command

echo ${INSERT} | mysql --user=user --password=password --database=database
done

各行から有効な INSERT コマンドを作成したいのですが、どうすればよいかわかりません。

何か考えはありますか?ありがとう。

4

1 に答える 1

1

ロードする入力ファイルとそれをロードするテーブルを指定できる関数を定義する次の例のように、ヒア ドキュメントで変数を展開できます。

load_file_into_db() {
    infile=$1
    table=$2
    mysql --user=user --password=password --database=database<<EOF
    LOAD DATA INFILE '${infile}' INTO TABLE ${table} 
    FIELD TERMINATED BY ',' LINES TERMIANATED BY '\n';
    EOF
}

# Then you can call the function like so
load_file_into_db text.txt example

終了文字を一重引用符で囲まない限り (つまり、<< の前に EOF の代わりに 'EOF' を使用する場合)、変数は常にヒア ドキュメントに展開できます。

于 2012-04-30T16:24:46.543 に答える