我正在尝试迭代一个分隔文本文件并使用 shell 脚本将它们插入到 mysql 数据库表中。
#!/bin/bash
while IFS='|' read val1 val2 val3
#cat testfile.txt | while read line
do
#val1=`echo $line | cut -d'|' -f1`
#val2=`echo $line | cut -d'|' -f2`
#val3=`echo $line | cut -d'|' -f3`
echo $val1 $val2 $val3
/usr/local/mysql/bin/mysql --host=127.0.0.1 --user=root --password= test << EOF
insert into addressTable(street,city,zip)values('$val1','$val2','$val3')
EOF
done < testfile.txt
testfile.txt 的内容为
abc|xyz|123
def|uvw|456
运行脚本时,我收到 ./testMySQL.sh: line 12: 语法错误:意外的文件结尾
错误。
如果我注释掉连接到 mysql 的代码以及后续的插入语句,则脚本可以正常工作并且只显示内容。
我相信我迭代文件的方式可能会导致它,但不确定我在这里缺少什么。
最佳答案
说:
while IFS='|' read val1 val2 val3
导致设置变量val1
、val2
、val3
(假设您的输入采用您所描述的形式)。
注释或删除以下行应该可以解决问题:
val1=`echo $line | cut -d'|' -f1`
val2=`echo $line | cut -d'|' -f2`
val3=`echo $line | cut -d'|' -f3`
如果您说过以下内容,则需要上面的行:
while read line
而不是
while IFS='|' read val1 val2 val3
关于mysql - 从unix迭代并写入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19044742/