【问题标题】:How can i pipe the ouput variables of CUT command to another command如何将 CUT 命令的输出变量通过管道传输到另一个命令
【发布时间】: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


    【解决方案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)将是可行的方法。

    使用编程语言还有另一个重要优势 - 您无需通过不安全的命令行传递密码。

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 2013-10-13
      • 1970-01-01
      • 2018-11-17
      • 2015-04-18
      • 2012-08-08
      • 2019-08-17
      • 2019-11-08
      相关资源
      最近更新 更多