Bash剪切并插入

我正在尝试使用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 )但最终导致: '\''

一起拉

  1. 每次读取input文件的每一行一行,并在每一行上运行awk命令。
  2. 将命令的输出保存到variable
  3. echo "$variable; " | mysql -u username -pPASSWORDHERE databaseName

您将不得不build立连接并为每一行运行查询。 如果这是一个问题,你可以想象; 分隔插入命令列表,将它们全部组合起来,并在一个连接中运行它们(IE:一次调用mysql命令)

如果可用我build议使用phpmyadmin的导入CSVfunction,它包括能够更改分隔符等。