Você provavelmente quer
CREATE TABLE AS
- também funciona para TEMPORARY
(TEMP
) tabelas:CREATE TEMP TABLE temp1 AS
SELECT dataid
, register_type
, timestamp_localtime
, read_value_avg
FROM rawdata.egauge
WHERE register_type LIKE '%gen%'
ORDER BY dataid, timestamp_localtime;
Isso cria uma tabela temporária e copia os dados para ela. Um instantâneo estático dos dados, lembre-se. É como uma tabela normal, mas reside na RAM se
temp_buffers
está definido alto o suficiente. Só é visível na sessão atual e morre no final. Quando criado com ON COMMIT DROP
ele morre no final da transação . As tabelas temporárias vêm em primeiro lugar no caminho de pesquisa de esquema padrão , ocultando outras tabelas visíveis com o mesmo nome, a menos que sejam qualificadas pelo esquema:
- Como o search_path influencia a resolução do identificador e o "esquema atual"
Se você quiser dinâmico , você estaria procurando por
CREATE VIEW
- uma história completamente diferente. O padrão SQL também define, e o Postgres também suporta:
SELECT INTO
É melhor usarCREATE TABLE AS
para este fim no novo código.
Não há necessidade de uma segunda variante de sintaxe e
SELECT INTO
é usado para atribuição em plpgsql
, onde a sintaxe SQL consequentemente não é possível. Relacionado:
- Combine duas tabelas em uma nova para que as linhas selecionadas da outra sejam ignoradas
- ERRO:parâmetros de entrada após um com valor padrão também devem ter padrões no Postgres
CREATE TABLE LIKE (...)
copia apenas a estrutura de outra tabela e sem dados:
OLIKE
A cláusula especifica uma tabela da qual a nova tabela copia automaticamente todos os nomes de coluna, seus tipos de dados e suas restrições não nulas.
Se você precisar de uma tabela "temporária" apenas para fins de uma única consulta (e depois descartá-la), uma "tabela derivada" em um CTE ou uma subconsulta vem com uma sobrecarga consideravelmente menor:
- Alterar o plano de execução da consulta no postgresql manualmente?
- Combine duas consultas SELECT no PostgreSQL
- Reutilizar valor de seleção calculado
- Vários CTEs em uma única consulta
- Atualizar com resultados de outro sql