2016-04-30 388 views
1

我有一个shell脚本,它具有多个加载数据语句,可以将来自csv文件的数据加载到MySQL中的表中。如何使用GNU Parallel并行执行这些语句?在shell脚本中使用GNU并行执行多个mysql脚本并行

我的shell脚本是这样的:

#!/bin/bash 

mysql --defaults-extra-file=config.cnf -e "SELECT * 
FROM table1 
INTO OUTFILE '$path/table1.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';" 

mysql --defaults-extra-file=config.cnf -e "SELECT * 
FROM table2 
INTO OUTFILE '$path/table2.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';" 

mysql --defaults-extra-file=config.cnf -e "SELECT * 
FROM table3 
INTO OUTFILE '$path/table3.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';" 

echo "END of script" 

回答

2
doit() { 
    table="$1" 
    tablepath="$2" 
    mysql --defaults-extra-file=config.cnf -e "SELECT * 
    FROM $table 
    INTO OUTFILE '$tablepath' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';" 
} 
export -f doit 
parallel doit {/.} {} ::: path/table*.csv