SELECT
MySQL Workbench 에서 결과를 볼 때 하나의 \
max@host 10:13:58: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
> SELECT
> DISTINCT i.filesourceregexp
> FROM db.ImportLogFiles i'
+------------------------------------------------+
| filesourceregexp |
+------------------------------------------------+
| ^[0-9]{8}_1062355673_merge_google_pbn\.csv$ |
| ^[0-9]{8}_8026062435_merge_google_pbn\.csv$ |
| ^[0-9]{8}_1062355673_store_visits_report\.csv$ |
+------------------------------------------------+
max@host 10:14:10: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
SELECT
DISTINCT i.filesourceregexp
FROM db.ImportLogFiles i' | tail -n +2
^[0-9]{8}_1062355673_merge_google_pbn\\.csv$
^[0-9]{8}_8026062435_merge_google_pbn\\.csv$
^[0-9]{8}_1062355673_store_visits_report\\.csv$
max@host 10:14:19: ~$
이 옵션은 다음과 my.cnf
같습니다.
[client]
host = db-master
user = user
password = pass
default-character-set=utf8
결과를 파이핑하여 tail
출력 / 문자열 을 변경하는 이유는 무엇 입니까? (더블 참고 \
).
답변
tail
배관 이 아닙니다 .
mysql
stdout이 터미널 장치 인 경우 ASCII 복싱 출력 형식의 표 형식을 사용합니다 (사용자 용) . 파이프 나 일반 파일 인 경우와 같이 스크립트 형식이 아닌 경우 스크립팅 형식으로 되돌 립니다.
당신은 같은 다른 형식을 볼 수 있습니다
mysql... | cat
또는
mysql > file; cat file
출력 형식에 영향을주는 -r
/ --raw
, -s
/ --silent
, -B
/ --batch
, -N
/ --skip-column-names
/ --column-names=0
, -H
/ --html
, -t
/ --table
… 도 참조하십시오 .
출력이 터미널 장치로 이동하지 않더라도 테이블 형식 출력을 원하면 다음 -t
옵션을 추가하십시오 .
mysql -t ... | tail -n +2
그러나 요점이 헤더 행을 제거하는 것이라면을 사용 -N
하거나 사용하지 않고을 사용하십시오 -t
.
가능한 한 원시 데이터베이스에서 헤더없이 값을 얻으려면 다음을 사용하십시오.
mysql --defaults-extra-file=/some/protected/file/with/credentials \
--batch --raw --skip-column-names -e 'select...' database
그건:
ps
대신 (자신과 같이my.cnf
) 파일에 자격 증명을 전달 하여 출력에 비밀번호를 노출시키지 마십시오--defaults-extra-file
.- 배치 모드를 사용하여 테이블 형식의 출력을 피하십시오 (실제로 다른 의미를 가질 수있는 배치를 처리한다는 사실을 인정하십시오).
--raw
탈출 을 피하기 위해 . 값에 개행 문자가 포함되어 있지 않다고 가정하면 출력을 안정적으로 후 처리 할 수 없습니다.--skip-column-names
헤더 행을 제거하십시오.