Получить все столбцы из всех таблиц MySQL



есть ли быстрый способ получить все имена столбцов из всех таблиц в MySQL, без необходимости перечислять все таблицы?

498   10  

10 ответов:

select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

чтобы перечислить все поля из таблицы в MySQL:

select * 
  from information_schema.columns 
 where table_schema = 'your_DB_name' 
   and table_name = 'Your_tablename'
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
ORDER BY table_name, ordinal_position

поскольку у меня недостаточно репутации для комментариев, Вот небольшое улучшение (на мой взгляд) по сравнению с отличным ответом Ника рулеза: замена WHERE table_schema = 'your_db' С WHERE table_schema = DATABASE().

лучше использовать следующий запрос, чтобы получить все имена столбцов легко

Show columns from tablename

на случай, если это полезно для кого-либо еще, это даст вам список столбцов с разделителями-запятыми в каждой таблице:

SELECT table_name,GROUP_CONCAT(column_name ORDER BY ordinal_position)
FROM information_schema.columns
WHERE table_schema = DATABASE()
GROUP BY table_name
ORDER BY table_name

Примечание: при использовании таблиц с большим количеством столбцов и / или с длинными именами полей, имейте в виду group_concat_max_len предел, который может привести к усечению данных.

<?php
        $table = 'orders';
        $query = "SHOW COLUMNS FROM $table";
        if($output = mysql_query($query)):
            $columns = array();
            while($result = mysql_fetch_assoc($output)):
                $columns[] = $result['Field'];
            endwhile;
        endif;
        echo '<pre>';
        print_r($columns);
        echo '</pre>';
?>

аналогично ответ отправлен @suganya это не дает прямого ответа на вопрос, но является более быстрой альтернативой для одной таблицы:

DESCRIBE column_name;

Я написал эту глупую вещь давно и до сих пор на самом деле использовать его время от времени:

https://gist.github.com/kphretiq/e2f924416a326895233d

в основном, он делает "показать таблицы", затем "описать" на каждой таблице, а затем выплевывает его как markdown.

просто отредактируйте ниже "если имя" и уходят. Вам нужно будет установить pymysql.

Piggybacking на ответ Николы с некоторым читаемым php

$a = mysqli_query($conn,"select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position");
$b = mysqli_fetch_all($a,MYSQLI_ASSOC);
$d = array();
foreach($b as $c){
    if(!is_array($d[$c['TABLE_NAME']])){
        $d[$c['TABLE_NAME']] = array();
    }
    $d[$c['TABLE_NAME']][] = $c['COLUMN_NAME'];
}
echo "<pre>",print_r($d),"</pre>";

вопрос :

есть ли быстрый способ получить все имена столбцов из всех таблиц в MySQL, без необходимости перечислять все таблицы?

SQL, чтобы получить всю информацию для каждого столбца

select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

SQL, чтобы получить все имена столбцов

select COLUMN_NAME from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

Comments

    Ничего не найдено.