私は PuTTY を使用して実行しています:
mysql> SELECT * FROM sometable;
sometable
には多くのフィールドがあり、これにより、多くの列が端末に表示されます。フィールドは次の行に折り返されるため、列タイトルとフィールド値を並べることは非常に困難です。
端末でそのようなデータを表示するためのソリューションは何ですか?
PhpMyAdminやその他のGUIインターフェースへのアクセス権も持っていません。次のようなコマンドラインソリューションを探しています。 MySQLクエリの結果をテキストまたは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;
ページャーが完了し、stdout
の通常の出力に戻りたい場合は、これを使用します。
mysql> nopager
デフォルトのポケットベルはstdoutです。 stdoutには列の制限があるため、出力はラップされます。他のツールをページャーとして設定して、出力をフォーマットできます。 2つの方法があります。 1つは列を制限すること、もう1つは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>
出力は完了していません。コンテンツは画面に収まります。
2番目:
.vimrcでnowrapにvimモードを設定します
➜ ~ 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
がクエリの出力が実際に1ページ以上の場合にのみ使用されることです。すべてのフラグの説明は次のとおりです。
注:.my.cnf
ファイルでは、[client]
キーワードの下にpager
コマンドを置かないでください。 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"
pspg
を書きました- https://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]> select now(); MariaDB [sakila]> select * from nicer_but_slower_film_list limit 100;
tee
を使用して、クエリの結果をファイルに書き込むことができます。
tee somepath\filename.txt
Windowsコマンドプロンプトを使用すると、列の数を表示したいだけウィンドウのバッファサイズを増やすことができます。これは、テーブル内の列数に依存します。
PuTTYには、ウィンドウに指定できる列の最大数があると思います。
Windowsの場合、私は個人的にWindows PowerShellを使用し、画面バッファーの幅を適度に高く設定します。列幅は固定されたままで、水平スクロールバーを使用してデータを表示できます。私はあなたが今持っている同じ問題を抱えていました。
編集:SSHを使用する必要があるリモートホストの場合、plink + Windows PowerShellなどを使用します。