Sehen Sie sich die Mysql-Ausgabe mit tabellarischen Spalten an

592
veilig

Wie kommt es, wenn ich eine Mysql-Abfrage starte und die Ergebnisse in stdout abspeichere, bekomme ich eine ziemlich gedruckte Tabelle, dh:

> mysql -e "describe <table>" <database> +------------+--------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------------------+-------+ | col1 | varchar(36) | NO | PRI | NULL | | | col2 | int(11) | NO | | NULL | | | col3 | varchar(35) | NO | | NULL | | | col4 | varchar(35) | NO | | NULL | | | col5 | varchar(25) | YES | | NULL | | | col6 | varchar(255) | YES | | NULL | | | col7 | varchar(255) | YES | | NULL | | | col8 | varchar(2) | YES | | NULL | | | col9 | varchar(75) | YES | | NULL | | | col10 | varchar(75) | YES | | NULL | | | col11 | varchar(75) | YES | | NULL | | | col12 | varchar(2) | YES | | NULL | | | col13 | varchar(10) | YES | | NULL | | | col14 | varchar(20) | YES | | NULL | | | col15 | timestamp | NO | | 0000-00-00 00:00:00 | | | col16 | timestamp | NO | | 0000-00-00 00:00:00 | | | col17 | timestamp | YES | | NULL | | +------------+--------------+------+-----+---------------------+-------+ 

Wenn ich jedoch mit dem watchBefehl eine Abfrage ausgeben kann, wird die tabellarische Formatierung nicht mehr angezeigt.

dh:

> watch -n 1 'mysql -e "describe <table>" <database>'   Every 1.0s: mysql -e "describe <table>" <database> Mon Jun 9 12:08:54 2014  Field Type Null Key Default Extra col1 varchar(36) NO PRI NULL col2 int(11) NO NULL col3 varchar(35) NO NULL col4 varchar(35) NO NULL col5 varchar(25) YES NULL col6 varchar(255) YES NULL col7 varchar(255) YES NULL col8 varchar(2) YES NULL col9 varchar(75) YES NULL col10 varchar(75) YES NULL col11 varchar(75) YES NULL col12 varchar(2) YES NULL col13 varchar(10) YES NULL col14 varchar(20) YES NULL col15 timestamp NO 0000-00-00 00:00:00 col16 timestamp NO 0000-00-00 00:00:00 col17 timestamp YES NULL 

Kann ich das zurückbekommen? Ich habe versucht mit dem --raw-Modus zu spielen, aber vielleicht habe ich nur die entsprechende Flagge verpasst?

1

1 Antwort auf die Frage

1
Benjamin Staton

Sie suchen nach der -tOption. Die Online-Hilfe von MySQL sagt zu -t:

Ausgabe im Tabellenformat anzeigen. Dies ist die Standardeinstellung für die interaktive Verwendung, kann jedoch verwendet werden, um eine Tabellenausgabe im Stapelmodus zu erzeugen.
Wenn Sie also mysql über eine Eingabeaufforderung ausführen, erhalten Sie das nette Tabellenformat. Wenn Sie jedoch im "Batch-Modus" (z. B. innerhalb eines Skripts oder in diesem Fall mit watch) arbeiten, erhalten Sie die Formatierung nicht ohne zu verwenden die -t. Was Sie wollen, ist wahrscheinlich eine Variation davon, watch -n 1 'mysql -t -e "describe table" database'die die schön formatierten Tabellen zurückgibt.