mysql - 从unix迭代并写入mysql

标签 mysql shell scripting

我正在尝试迭代一个分隔文本文件并使用 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

导致设置变量val1val2val3(假设您的输入采用您所描述的形式)。

注释或删除以下行应该可以解决问题:

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/

相关文章:

linux - 如何使用 find 测试目录是否为空

mysql - 使用 SQL 查询计算每一天

shell - Unix 猫 : No such file or directory error

performance - 是否有适合脚本的快速启动 Haskell 解释器?

linux - 如何编写脚本来重命名文件?

shell - 如何从shell脚本修改INI文件?

linux - 比较2个文件,删除不常见的字符串脚本

mysql - 查找表中的不一致

php - 通过函数传递 PHP 变量

mysql - 如何在 JMeter 中拆分和执行每个拆分值的 JDBC 插入 sql 查询