2009-08-15 20 views
0

folgenden Befehl wird mir die Namen der Datenbanken wissen lassen.mysqlshow mit der Anzahl der Tabellen

mysqlshow $

Aber wie kann ich wissen, die Anzahl der Tabellen in jeder Datenbank und auch die Anzahl der leeren Tabellen? für z.B.

db Zählung leer

Test 10 5

meinedb 122 0

Client 34 34

Antwort

2

Sie zählen zur Auswahl (*) aus INFORMATION_SCHEMA.TABLES wenn Sie priviliges drauf haben.

select count(*) from information_schema.tables 
where table_schema = <My Schema> 
and table_type = 'BASE TABLE'; 

und Filter auf table_rows Spalte für leere yables:

select count(*) from information_schema.tables 
where table_schema = <My Schema> 
and table_type = 'BASE TABLE' 
and table_rows = 0; 
+0

Sie müssen 'TABLE_TYPE' = 'BASE TABLE' zu where-Klausel für beide Anweisungen hinzufügen, um Ansichten aus Ihrer Zählung zu entfernen. – Scott

+0

Danke für die zusätzlichen Informationen. Es wurde den Abfragen hinzugefügt. – Zed

0

können Sie verwenden

SHOW TABLES; 

Um die Tabellen in einer Datenbank zu erhalten und Zählen Sie dann die zurückgegebenen Zeilen.

Sie können dies auch tun (obwohl es sehr langsam sein kann):

SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'my_database'; 
1
SHOW DATABASES; 
SHOW TABLES FROM --your_db_here--; 
SELECT COUNT(*) = 0 FROM --your_table_here--; 
1

gibt es eine spezielle Datenbank, information_schema die Metadaten über alle Datenbanken auf dem MySQL-Server enthält.

SELECT `TABLE_NAME`, `TABLE_ROWS` 
FROM `information_schema`.`TABLES` 
WHERE `TABLE_SCHEMA` = 'NameOfDatabaseYouAreInterestedIn' 
AND `TABLE_TYPE` = 'BASE TABLE' 

TABLE_ROWS nicht immer ganz genau ist, können Sie durch die Tabellen in einer Schleife wollen und eine Zählung

+0

Sie können TABLE_SCHEMA aus der where-Klausel entfernen, wenn Sie Informationen zu allen Datenbanken wünschen – Scott

0

Ich weiß nicht bekommen, wenn dies hilft, aber es gibt eine Option, um mysqlshow Anzahl der Zeilen pro Tabelle zu zeigen, (--count):

$mysqlshow --count *p* 
Wildcard: %p% 
+-------------+--------+--------------+ 
| Databases | Tables | Total Rows | 
+-------------+--------+--------------+ 
| implantacao |  25 |   134 | 
| pmsp  |  80 |  8561947 | 
| tmp   |  7 |   5 | 
+-------------+--------+--------------+ 
3 rows in set. 

Und wenn Sie den Namen der Datenbank übergeben:

$mysqlshow --count tmp 
Database: tmp 
+------------+----------+------------+ 
| Tables | Columns | Total Rows | 
+------------+----------+------------+ 
| builds  |  2 |   0 | 
| gtable  |  2 |   5 | 
| patterns |  9 |   0 | 
| products |  2 |   0 | 
| sig_types |  2 |   0 | 
| signatures |  2 |   0 | 
| versions |  2 |   0 | 
+------------+----------+------------+ 
7 rows in set. 

Sie können den Tabellennamen hinzufügen und Informationen darüber:

$mysqlshow tmp gtable 
Database: tmp Table: gtable 
+--------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+ 
| Field | Type | Collation   | Null | Key | Default | Extra | Privileges      | Comment | 
+--------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+ 
| symbol | text | latin1_swedish_ci | YES |  |   |  | select,insert,update,references |   | 
| size | int(11) |     | YES |  |   |  | select,insert,update,references |   | 
+--------+---------+-------------------+------+-----+---------+-------+---------------------------------+---------+ 

Blick auf mysqlshow --help für mehr Optionen/Informationen.

Verwandte Themen