Я пытаюсь использовать GNU parallel для выполнения нескольких команд mysql LOAD DATA LOCAL INFILE, где:
{1}
- это имя файла, который я получаю из командной строки поиска UNIX.{2}
- результатchop.pl
скрипта, который распечатывает определенный токен из строки файла в соответствии с определенными правилами.
Кажется, я правильно называю GNU parallel, за исключением того, что он не сохраняет двойные кавычки вокруг команды mysql после -e
, и это приводит к тому, что она не работает.
E.g.
find /my/folder/ -name "*.txt" | while read i; do chop.pl $i; echo $i; done | parallel -t -N 2 mysql -h localhost -uuser -pxxxxxxx --local-infile=1 -D dbname -e "LOAD DATA LOCAL INFILE '{2}' IGNORE INTO TABLE tblname IGNORE 1 LINES (col1,col2,col3,col4) set col5='{1}', col6='foo'"
Команда, которую он пытается выполнить, без двойных кавычек после -e
выглядит так:
mysql -h localhost -uuser -pxxxxxxx --local-infile=1 -D dbname -e LOAD DATA LOCAL INFILE '/my/file/name/yadda_yadda-12345678.txt' IGNORE INTO TABLE tblname IGNORE 1 LINES (col1,col2,col3,col4) set col5='yadda_yadda', col6='foo'
Есть идеи, как добавить двойные кавычки после -e
?