Подтвердить что ты не робот

Как показать все таблицы из нескольких баз данных

Как выбрать все таблицы из нескольких баз данных в mySql.. Я делаю следующие шаги, но не могу достичь цели.

<?php
$a = "SHOW DATABASES";
$da = $wpdb->get_results($a);

foreach($da as $k){
echo '<pre>';
print_r ($k->Database);//prints all the available databases
echo '</pre>';
$nq = "USE $k->Database";//trying to select the individual database
$newda = $wpdb->get_results($nq);
$alld = "SELECT * FROM $k->Database";
$td = $wpdb->get_results($alld);
var_dump($td);//returns empty array
}
?>

Пожалуйста, помогите мне

4b9b3361

Ответ 1

Вы не можете сделать

SELECT * FROM database

но вы можете сделать

USE DATEBASE;
SHOW TABLES;

или даже лучше:

SHOW TABLES IN database

Ответ 2

Используйте INFORMATION_SCHEMA:

select table_schema, table_name from information_schema.tables;

Ответ 3

Еще лучше:

Показать все таблицы во всех базах данных (кроме внутренних баз данных mysql) в одном выражении SQL.

SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema NOT IN ( 'information_schema', 'performance_schema', 'mysql' )

Ответ 4

mysql -e'select table_schema, table_name from information_schema.tables;'

Это зависит от наличия у вас файла ~/.my.cnf со следующим содержимым:

[client]
user=ADMINUSER     ## set user, usually 'root' 
password=PASSWORD  ## set password

Ответ 5

Я бы пошел на это это:

mysql -e "select table_schema, table_name from information_schema.tables;" | \
    grep -Pv '^(sys|performance_schema|TABLE_SCHEMA|mysql|information_schema)' | \
    perl -pe 's/\s+/./' | \
    sort -u