我想做这样的事情:
cat files_list | cut -d' ' -f1,3 | mysql -uroot -pxxxx -e "insert into table(var1, var2) values($f1,$f2)"
我怎样才能实现这个目标?
答案 0 :(得分:1)
您可以使用以下bash
脚本:
while read -a record ; do
mysql -uroot -pxxxx -e "insert into table(var1, var2) values(${record[0]}, ${record[2]})"
done < files_list
然而,这很简单,但效果不是很好。
如果任务是性能关键的,我只会构建一个mysql查询,它会一次性插入所有行,甚至更好:使用LOAD_DATA_INFILE
另请注意,如果任务是安全关键任务,意味着输入数据来自不受信任的来源,我根本不会使用命令行mysql客户端。使用支持mysql的预处理语句的编程语言 - 比如PHP - 将是最佳选择。
使用编程语言会有另一个重要的优势 - 你不需要通过不安全的命令行传递密码。