【发布时间】:2014-07-04 09:23:45
【问题描述】:
我想做这样的事情:
cat files_list | cut -d' ' -f1,3 | mysql -uroot -pxxxx -e "insert into table(var1, var2) values($f1,$f2)"
我怎样才能做到这一点?
【问题讨论】:
标签: mysql linux system-administration
我想做这样的事情:
cat files_list | cut -d' ' -f1,3 | mysql -uroot -pxxxx -e "insert into table(var1, var2) values($f1,$f2)"
我怎样才能做到这一点?
【问题讨论】:
标签: mysql linux system-administration
您可以使用以下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)将是可行的方法。
使用编程语言还有另一个重要优势 - 您无需通过不安全的命令行传递密码。
【讨论】: