1

我想知道如何将数据从可变文本文件插入到表中(存在于 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 命令,但我不知道该怎么做。

你有什么主意吗?谢谢。

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 回答