我正在尝试将sql表数据导出到csv,但是出现这些错误。我真的对双引号和单引号感到困惑。
#!/bin/bash
mysql -u root -pH0tjava1 -B -e 'SELECT CONCAT("sshpass -p ""Password"" rsync -avvtzh -e ""ssh -o StrictHostKeyChecking=no"" --log-file=""/home/toor/rsync2.log""", login,"@", ftp_addr, " :", camera_name,"/", "/",`\ 'home`',"/",login, "/", camera_name) INTO OUTFILE '/tmp/rsynctest3.csv' lines terminated by '\r\n' from inteliviz.cameras;"
Errors:
/usr/local/bin/rsync.sh: line 8: syntax error near unexpected token `)'
/usr/local/bin/rsync.sh: line 8: ` mysql -u root -pH0tjava1 -B -e "select CONCAT ("sshpass -p "Pa55word" rsync -avvtzh -e "ssh -o StrictHostKeyChecking=no" --log-file= "/home/toor/rsync2.log", login,camera_name,ftp_addr) INTO OUTFILE '/tmp/rsynctest3.csv' lines terminated by '\r\n' from inteliviz.cameras;"'
/usr/local/bin/rsync.sh: line 8: unexpected EOF while looking for matching ``'
/usr/local/bin/rsync.sh: line 11: syntax error: unexpected end of file
最佳答案
我真的对双引号和单引号感到困惑。
您的语句中不仅有双引号和单引号,而且还有反引号。不匹配的是:
您以'SELECT…
开头SQL语句,并以…inteliviz.cameras;"
结尾。要将引号从第一部分的'
切换到最后部分的"
,必须在e之间插入一个结束'
和一个开始"
。 G。 …camera_name)'" INTO OUTFILE…
表达式`\ 'home`'
混乱-第一个`
在外部单引号内,因此没有特殊功能,在'
关闭单引号之前的home
,第二个`
打开未封闭的命令替换,其中最后一个'
在其中。您必须重新考虑要在此处存放的内容,并使报价嵌套直接。
关于mysql - 使用bash脚本将mysql表数据导出到csv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34158725/