Probablemente quieras CREATE TABLE AS
- también funciona para TEMPORARY
(TEMP
) tablas:
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;
Esto crea una tabla temporal y copia datos en ella. Una instantánea estática de los datos, ojo. Es como una tabla normal, pero reside en la RAM si temp_buffers
se establece lo suficientemente alto. Solo es visible dentro de la sesión actual y muere al final de la misma. Cuando se crea con ON COMMIT DROP
muere al final de la transacción .
Las tablas temporales aparecen primero en la ruta de búsqueda de esquema predeterminada. , ocultando otras tablas visibles del mismo nombre a menos que estén calificadas para el esquema:
- ¿Cómo influye search_path en la resolución del identificador y el "esquema actual"?
Si quieres dinámico , estaría buscando CREATE VIEW
- una historia completamente diferente.
El estándar SQL también define y Postgres también admite: . Pero se desaconseja su uso:SELECT INTO
Lo mejor es usar CREATE TABLE AS
para este propósito en el nuevo código.
Realmente no hay necesidad de una segunda variante de sintaxis, y SELECT INTO
se utiliza para la asignación en plpgsql
, donde la sintaxis SQL, por lo tanto, no es posible.
Relacionado:
- Combina dos tablas en una nueva para que las filas seleccionadas de la otra se ignoren
- ERROR:los parámetros de entrada después de uno con un valor predeterminado también deben tener valores predeterminados en Postgres
CREATE TABLE LIKE (...)
solo copia la estructura de otra tabla y sin datos:
El LIKE
La cláusula especifica una tabla desde la cual la nueva tabla copia automáticamente todos los nombres de columna, sus tipos de datos y sus restricciones de no nulo.
Si necesita una tabla "temporal" solo con el propósito de una sola consulta (y luego descartarla), una "tabla derivada" en un CTE o una subconsulta viene con una sobrecarga considerablemente menor:
- ¿Cambiar el plan de ejecución de consulta en postgresql manualmente?
- Combina dos consultas SELECT en PostgreSQL
- Reutilizar el valor seleccionado calculado
- Múltiples CTE en una sola consulta
- Actualizar con resultados de otro sql