"mysql"을 "tail"로 파이핑하면 출력 형식이 변경되는 이유는 무엇입니까?

"mysql"을 "tail"로 파이핑하면 출력 형식이 변경되는 이유는 무엇입니까?

MySQL Workbench를 사용하여 결과를 볼 때 SELECT하나만 정확합니다.\

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출력/문자열이 변경되는 이유는 무엇입니까? (이중 참고 \).

답변1

아니요 tail, 파이프라인입니다.

mysql표준 출력이 터미널 장치인 경우 사용자가 사용할 수 있게 되면 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헤더 행을 제거합니다.

관련 정보