Estou precisando trabalhar com tabelas cujos nomes começam com números. Por exemplo, no crs_1973
esquema existe uma tabela chamada 2015_04_21
. Eu sei que quando o nome da tabela é formado por números, devo aspas duplas para trabalhar com ela, por exemplo, SELECT * FROM crs_1973."2015_04_21";
(isso funciona para mim). No entanto, quero extrair informações sobre esta tabela do PostgreSQL information_schema
. Especificamente, preciso dos tipos de dados das colunas na tabela 2015_04_21
,
Eu tentei esta consulta com uma tabela cujo nome começa com uma letra e produz o resultado desejado:
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'some_table_name_that_starts_with_a_letter'
ORDER BY ordinal_position;
Porém, quando executo essa consulta com as tabelas cujos nomes iniciam com um número, isso não ocorre. Por exemplo:
WHERE table_name = 'crs_1973.2015_04_21'
não funciona. Nem faz:
WHERE table_name = 'crs_1973'.'2015_04_21'
WHERE table_name = 'crs_1973'."2015_04_21"
WHERE table_name = 'crs_1973'.'"2015_04_21"'
...
etc. Como faço essa consulta funcionar para um nome de tabela que começa com um número? Isso é possível?
Existem tabelas chamadas "2015_04_21" em vários esquemas diferentes, então preciso passar um nome de tabela qualificado para a consulta.
Solução do @ypercube (nos comentários acima):
funcionou perfeitamente. Estou escrevendo aqui para que eu possa aceitar a resposta.