2017-04-01 2 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

관련 문제