2015-12-08 90 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關閉單引號部分'之前,第二`打開一個未關閉命令替換,其中最終的內'是。你必須重新考慮你想在那裏得到什麼並且直接得到報價嵌套。