2015-12-08 59 views
0

我想将我的sql表数据导出到csv,但有这些错误。我真的与双引号和单引号混淆。使用bash脚本将mysql表数据导出到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 
+0

[如何以CSV格式输出MySQL查询结果?](http://stackoverflow.com/q/356578/3776858) – Cyrus

+0

首先在客户端界面中处理您的查询。一旦你有一个工作查询,你可以摆弄引号和单引号从脚本运行它。 –

+0

感谢赛勒斯,我已经经历了这个问题,但仍然失败了这个脚本来让它工作。 –

回答

0

我用双引号和单引号真的很困惑。

你不仅有双引号和单引号,而且在你的语句中还有反引号。的错配是:

  • 您与'SELECT…开始的SQL语句,并…inteliviz.cameras;"结束。要将报价从第一部分中的'切换到最后一部分中的",您必须插入一个关闭'和开头",例如, G。 …camera_name)'" INTO OUTFILE…
  • 表达`\ 'home`'就会混乱 - 第一`是外单引号内,因此没有特殊的功能,home关闭单引号部分'之前,第二`打开一个未关闭命令替换,其中最终的内'是。你必须重新考虑你想在那里得到什么并且直接得到报价嵌套。