簡體   English   中英

使用bash腳本將mysql表數據導出到csv

[英]export mysql table data to csv using bash script

我正在嘗試將我的 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

我真的很困惑雙引號和單引號。

你的語句中不僅有雙引號和單引號,還有反引號。 不匹配是:

  • 你開始用SQL語句'SELECT… ,結束於…inteliviz.cameras;"切換從報價。 '在第一部分"中的最后一部分,則必須插入結束'和開口"你我中間,如…camera_name)'" INTO OUTFILE…
  • 表達式`\\ 'home`'被弄亂了 - 第一個`在外部單引號內,因此沒有特殊功能, home之前的'關閉單引號部分,第二個`打開一個未關閉的命令替換,其中最后'是。 您必須重新考慮您想要在那里擁有什么,並直接嵌套引用。

嘗試使用以下腳本,這對我有用:

# Read query into a variable
sql="$(cat query.sql)"

# If sqlplus is not installed, then exit
if ! command -v sqlplus > /dev/null; then 
  echo "SQL*Plus is required..."
  exit 1 
fi 

# Connect to the database, run the query, then disconnect
echo -e "SET PAGESIZE 0\n SET FEEDBACK OFF\n $sql" | \
sqlplus -S -L "$USERNAME/$PASSWORD@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$HOST)(PORT=$PORT))(CONNECT_DATA=(SERVICE_NAME=$DATABASE)))"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM