너무 많은 필드를 반환하는 MySQL SELECT를 터미널에 가장 잘 표시하는 방법은 무엇입니까?
PuTTY 를 사용 하여 실행 중입니다.
mysql> SELECT * FROM sometable;
sometable
많은 필드가 있으며 이로 인해 많은 열이 터미널에 표시됩니다. 필드는 다음 줄로 줄 바꿈되므로 열 제목을 필드 값으로 정렬하기가 매우 어렵습니다.
터미널에서 이러한 데이터를 볼 수있는 솔루션은 무엇입니까?
phpMyAdmin 또는 다른 GUI 인터페이스에 액세스하고 싶지 않습니다. 다음과 같은 명령 줄 솔루션을 찾고 있습니다. MySQL Query 결과를 텍스트 또는 CVS 파일로 저장
\G
대신로 검색어를 종료하십시오 ;
. 예를 들면 다음과 같습니다.
SELECT * FROM sometable\G
이 쿼리는 다음과 같이 행을 세로로 표시합니다.
*************************** 1. row ***************************
Host: localhost
Db: mydatabase1
User: myuser1
Select_priv: Y
Insert_priv: Y
Update_priv: Y
...
*************************** 2. row ***************************
Host: localhost
Db: mydatabase2
User: myuser2
Select_priv: Y
Insert_priv: Y
Update_priv: Y
...
이 기능이 유용 할 수도 있습니다 (Windows 이외의 경우 만 해당).
mysql> pager less -SFX
mysql> SELECT * FROM sometable;
이렇게하면 less
명령 행 도구를 통해 출력을 파이프 할 수 있습니다.이 매개 변수를 사용하면 커서 키를 사용하여 가로 및 세로로 스크롤 할 수있는 테이블 형식 출력이 제공됩니다.
도구 q
를 종료 할 키를 누르면 이보기를 그대로 둡니다 less
.
\G
다음 대신 쿼리를 실행 하여 수직 모드를 활성화하십시오 ;
.
mysql> SELECT * FROM sometable \G
결과는 세로 모드로 표시되므로 각 열 값이 별도의 줄에 인쇄됩니다. 출력은 더 좁아 지지만 훨씬 더 길어집니다.
--table
또는 -t
옵션을 사용하면 멋진 결과 집합이 출력됩니다.
echo 'desc table_name' | mysql -uroot database -t
또는 mysql에 쿼리를 전달하는 다른 방법 :
mysql -uroot table_name --table < /tmp/somequery.sql
산출:
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(30) | NO | UNI | NULL | |
| first_name | varchar(30) | NO | | NULL | |
| last_name | varchar(30) | NO | | NULL | |
| email | varchar(75) | NO | | NULL | |
| password | varchar(128) | NO | | NULL | |
| is_staff | tinyint(1) | NO | | NULL | |
| is_active | tinyint(1) | NO | | NULL | |
| is_superuser | tinyint(1) | NO | | NULL | |
| last_login | datetime | NO | | NULL | |
| date_joined | datetime | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
사용 mysql
의 ego
명령을
에서 mysql
의 help
명령
ego (\ G) mysql 서버에 명령을 보내고 결과를 세로로 표시합니다.
추가로 그래서 \G
당신을을 select
, 당신은 매우 깨끗 수직 출력을 얻을 수 있습니다 :
mysql> SELECT * FROM sometable \G;
호출기 사용
MySQL에게 넓은 라인을 자르고 화살표 키로 스크롤 할 수있는 출력을 제공 less
하는 -S
옵션 과 함께 페이저 를 사용하도록 지시 할 수 있습니다.
mysql> pager less -S
따라서 다음에 넓은 출력으로 명령을 실행하면 MySQL에서 less
호출기로 출력을 찾아 볼 수 있습니다 .
mysql> SELECT * FROM sometable;
호출기로 작업을 마치고 일반 출력 on으로 돌아가려면 다음을 stdout
사용하십시오.
mysql> nopager
기본 호출기는 stdout입니다. stdout에는 열 제한이 있으므로 출력이 줄 바꿈됩니다. 다른 도구를 호출기로 설정하여 출력 형식을 지정할 수 있습니다. 두 가지 방법이 있습니다. 하나는 열을 제한하고 다른 하나는 vim에서 열을 처리하는 것입니다.
첫 번째 방법 :
➜ ~ echo $COLUMNS
179
mysql> nopager
PAGER set to stdout
mysql> pager cut -c -179
PAGER set to 'cut -c -179'
mysql> select * from db;
+-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv |
+-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-
| % | test | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y |
| % | test\_% | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y |
| localhost | phpmyadmin | phpmyadmin | Y | Y | Y | Y | Y | Y | N | Y | Y | Y |
| localhost | it | it | Y | Y | Y | Y | Y | Y | N | Y | Y | Y |
+-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-
4 rows in set (0.00 sec)
mysql>
출력이 완료되지 않았습니다. 내용이 화면에 맞습니다.
두 번째 것 :
vim 모드를 설정하여 .vimrc에 넣으십시오.
➜ ~ tail ~/.vimrc
" no-wrap for myslq cli
set nowrap
mysql> pager vim -
PAGER set to 'vim -'
mysql> select * from db;
Vim: Reading from stdin...
+-----------+------------+------------+-------------+-------------+----------
| Host | Db | User | Select_priv | Insert_priv | Update_pr
+-----------+------------+------------+-------------+-------------+----------
| % | test | | Y | Y | Y
| % | test\_% | | Y | Y | Y
| localhost | phpmyadmin | phpmyadmin | Y | Y | Y
| localhost | it | it | Y | Y | Y
+-----------+------------+------------+-------------+-------------+----------
~
~
~
가장 잘 생각한 답변을 보완하기 위해 less -SFX
다른 방법으로 도 사용 .my.cnf
합니다. 홈 폴더의 파일에 광고를 게재하고 싶습니다 .cnf 파일의 예는 다음과 같습니다.
[client]
user=root
password=MyPwD
[mysql]
pager='less -SFX'
이 방법으로 얻는 좋은 점은 less
쿼리 출력이 실제로 두 페이지 이상인 경우에만 사용 된다는 것 입니다. 여기에는 모든 플래그에 대한 설명이 있습니다.
- -S : 한 줄, 줄이 화면보다 넓은 경우 줄을 건너 뛰지 말고 오른쪽으로 스크롤하십시오.
- -F : 하나의 화면 이면 내용을 스크롤 할 필요가 없으면 stdout으로 보내십시오.
- -X : 초기화 안 됨, 모든 출력을 비활성화합니다. "less"는로드 할 때마다 출력하도록 구성했을 수 있습니다.
참고 : .my.cnf
파일 pager
에서 [client]
키워드 아래에 명령을 넣지 마십시오 . mysql
잘 작동하지만 mysqldump
인식하지 못하는 것에 대해 불평합니다.
대화식으로 MySQL을 사용하는 경우 다음 sed
과 같이 사용하도록 호출기를 설정할 수 있습니다 .
$ mysql -u <user> p<password>
mysql> pager sed 's/,/\n/g'
PAGER set to 'sed 's/,/\n/g''
mysql> SELECT blah FROM blah WHERE blah = blah
.
.
.
"blah":"blah"
"blah":"blah"
"blah":"blah"
sed
호출기로 사용하지 않으면 출력은 다음과 같습니다.
"blah":"blah","blah":"blah","blah":"blah"
나는 썼다-https pspg
: //github.com/okbob/pspg
이 호출기는 테이블 형식 데이터 용으로 설계되었으며 MySQL도 지원됩니다.
MariaDB [sakila]> 호출기 pspg -s 14 -X --force-uniborder --quit-if-one-screen PAGER가 'pspg -s 14 -X --force-uniborder --quit-if-one-screen'으로 설정되었습니다. MariaDB [sakila]> 지금 선택 (); MariaDB [sakila]> select * from nicer_but_slower_film_list 한도 100;
퍼티에는 창에 지정할 수있는 최대 열 수가 있다고 생각합니다.
Windows의 경우 개인적으로 Windows PowerShell을 사용하고 화면 버퍼 너비를 합리적으로 높게 설정합니다. 열 너비는 고정되어 있으며 가로 스크롤 막대를 사용하여 데이터를 볼 수 있습니다. 나는 당신이 지금 가지고있는 것과 같은 문제가있었습니다.
편집 : SSH로 연결 해야하는 원격 호스트의 경우 plink + Windows PowerShell과 같은 것을 사용합니다
tee
쿼리 결과를 파일에 쓰는 데 사용할 수 있습니다 .
tee somepath\filename.txt
Windows 명령 프롬프트를 사용하면 열 수를 보려는만큼 창의 버퍼 크기를 늘릴 수 있습니다. 이것은 테이블의 열 수에 따라 다릅니다.
'Programing' 카테고리의 다른 글
2 단어 도시처럼 각 단어의 첫 문자를 대문자로 표시하는 방법은 무엇입니까? (0) | 2020.04.07 |
---|---|
iPhone UIView z 인덱스를 설정하는 방법? (0) | 2020.04.07 |
JavaScript에서 IE 버전 (v9 이전) 감지 (0) | 2020.04.07 |
Ruby : 배열에서 첫 번째 요소를 제거하는 가장 쉬운 방법은 무엇입니까? (0) | 2020.04.07 |
preferredStatusBarStyle이 호출되지 않았습니다. (0) | 2020.04.07 |