我正在尝试使用bash脚本从冒号分隔文件input并将这些值插入到mysql数据库。 到目前为止,我能够正确地剪切这些数据并将其打印出来,但是我不知道如何在每次剪切操作时操作数据。
即。
cut -d: -f1 input.txt | \ while read firstVal; do echo firstVal; done
从这里看来,我可以放置一个mysql插入行来代替我回应的名字来实现我想要做的事情。 所以我可以通过用f2replacef1来做同样的事情,但我不知道如何同时使用多个值,然后插入f1,f2,f3等任何想法?
为什么不使用更强大的脚本语言? (PHP,Python等)
echo "test1:test2:test3" | \ awk -F: '{print "INSERT INTO `tableName` (`column1`, `column2`, `column3`) \ VALUES('\''"$1"'\'', '\''"$2"'\'', '\''"$3"'\'' ) " }'
生产:
INSERT INTO `tableName` (`column1`, `column2`, `column3`) \ VALUES('test1', 'test2', 'test3' )
Awk使用-F标志来设置分隔符。 增值的单引号是通过在一套自己的单引号中join“ \'来实现的。 (魔术你可以在这里阅读: https : //stackoverflow.com/questions/9899001/how-to-escape-single-quote-in-awk-inside-printf )但最终导致: '\''
variable echo "$variable; " | mysql -u username -pPASSWORDHERE databaseName 您将不得不build立连接并为每一行运行查询。 如果这是一个问题,你可以想象; 分隔插入命令列表,将它们全部组合起来,并在一个连接中运行它们(IE:一次调用mysql命令)
如果可用我build议使用phpmyadmin的导入CSVfunction,它包括能够更改分隔符等。