如何从变量文本文件中将数据插入表中?

时间:2012-04-30 14:06:05

标签: mysql sql bash

我想知道如何从变量文本文件中将数据插入表(存在于sql server上)。

我第一次尝试使用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命令,但我不知道该怎么做。

你知道吗?感谢。

1 个答案:

答案 0 :(得分: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

变量总是可以扩展到此处的文档中,除非您将终止字符用单引号括起来(即,如果在&lt;&lt;&lt;&lt;&lt;&gt;之前使用'EOF'而不是EOF