Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Há algum lugar do MySQL (information_schema ou mysql) que armazene os tipos de dados para as colunas?
Já dei uma pesquisada e só consegui relação desses tipos de dados. Necessito de recuperar essa informação do próprio MySQL. Criar uma tabela contendo esses tipos de dados não resolve meu problema.
Obrigado!
Metadados podem ser visualizados através do catálogo de dados do MySQL, que é o banco de dados de nome INFORMATION_SCHEMA.
Primeira procedimento: como recupero os nomes das tabelas do catálogo do MySQL? Vamos lá:
mysql> show tables from information_schema;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| KEY_COLUMN_USAGE |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| VIEWS |
| USER_PRIVILEGES |
+---------------------------------------+
16 rows in set (0.00 sec)
Como você deseja saber os tipos de dados das colunas das tabelas de seu banco de dados, temos que consultar a tabela COLUMNS, que tem a seguinte estrutura:
mysql> DESC INFORMATION_SCHEMA.COLUMNS;
+--------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+--------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | YES | | NULL | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| COLUMN_NAME | varchar(64) | NO | | | |
| ORDINAL_POSITION | bigint(21) | NO | | 0 | |
| COLUMN_DEFAULT | varchar(64) | YES | | NULL | |
| IS_NULLABLE | varchar(3) | NO | | | |
| DATA_TYPE | varchar(64) | NO | | | |
| CHARACTER_MAXIMUM_LENGTH | bigint(21) | YES | | NULL | |
| CHARACTER_OCTET_LENGTH | bigint(21) | YES | | NULL | |
| NUMERIC_PRECISION | bigint(21) | YES | | NULL | |
| NUMERIC_SCALE | bigint(21) | YES | | NULL | |
| CHARACTER_SET_NAME | varchar(64) | YES | | NULL | |
| COLLATION_NAME | varchar(64) | YES | | NULL | |
| COLUMN_TYPE | longtext | NO | | | |
| COLUMN_KEY | varchar(3) | NO | | | |
| EXTRA | varchar(20) | NO | | | |
| PRIVILEGES | varchar(80) | NO | | | |
| COLUMN_COMMENT | varchar(255) | NO | | | |
+--------------------------+--------------+------+-----+---------+-------+
19 rows in set (0.00 sec)
+------------+-------------+-----------+-------------+----------------+
| TABLE_NAME | COLUMN_NAME | DATA TYPE | IS_NULLABLE | COLUMN_DEFAULT |
+------------+-------------+-----------+-------------+----------------+
| t1 | id | NULL | NO | NULL |
| t1 | nome | char(80) | YES | NULL |
| te | id | NULL | NO | NULL |
| tr | nome | char(80) | YES | NULL |
+------------+-------------+-----------+-------------+----------------+
4 rows in set (0.01 sec)
A consulta acima poderá ser mais sofisticada, caso você precise de outra visualização dos dados!
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif