2017-04-01 18 views
0

私はbashスクリプトを作成していますが、SQLクエリが必要ですが、bashのエスケープ文字があります。bashスクリプトでエスケープ文字を無視する方法は?

私はbashのエスケープ文字なしでSQLクエリーを読んでいますが、なぜこのエスケープ文字はMySQLのものなのですか?

QUERY="SELECT department_id, description FROM departments INTO OUTFILE '/var/lib/mysql-files/departaments.csv' FIELDS TERMINATED BY ', ' ENCLOSED BY '"' LINES TERMINATED BY '\n';" 

ありがとうございます!

+0

印刷します。 – Nanne

+0

文字列がそのまま必要です。文字をこの文字列にエスケープすると、MySQLは読むことができません。 – alvarezsh

答えて

1

あなたは変数を展開する必要がある場合には、

read -r -d '' query <<'EOF' 
SELECT department_id, description FROM departments INTO OUTFILE '/var/lib/mysql-files/departaments.csv' FIELDS TERMINATED BY ', ' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 
EOF 

printf "%s\n" "$query" 

出力

SELECT department_id, description FROM departments INTO OUTFILE '/var/lib/mysql-files/departaments.csv' FIELDS TERMINATED BY ', ' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

編集を使用することができ、例えばEOFから'を削除以下のような:

outfile=/tmp/file 
read -r -d '' query <<EOF 
SELECT department_id, description FROM departments 
INTO OUTFILE '$outfile' 
FIELDS TERMINATED BY ', ' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 
EOF 
printf "%s\n" "$query" 

は($outfile変数に注意してください)あなたは(ので、それらを倍)エスケープ文字をエスケープエスケープする必要が

SELECT department_id, description FROM departments 
INTO OUTFILE '/tmp/file' 
FIELDS TERMINATED BY ', ' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 
+0

ありがとう!!それはまさに私が必要としたものだ – alvarezsh

+0

@alvarezshを楽しむ。また編集を加えました。 – jm666

+1

ありがとう、私は理解する! – alvarezsh

関連する問題