Création de tables temporaires dans SQL
Je suis en train de créer une table temporaire qui sélectionne uniquement les données pour un certain register_type
. J'ai écrit cette requête, mais il ne fonctionne pas:
$ CREATE TABLE temp1
(Select
egauge.dataid,
egauge.register_type,
egauge.timestamp_localtime,
egauge.read_value_avg
from rawdata.egauge
where register_type like '%gen%'
order by dataid, timestamp_localtime ) $
Je suis en utilisant PostgreSQL.
Pourriez-vous me dire quel est le problème avec la requête?
Vous devez vous connecter pour publier un commentaire.
Vous voulez probablement
CREATE TABLE as
- fonctionne également pour lesTEMPORARY
(TEMP
) tables:Cela crée une table temporaire et des copies de données. Un instantané statique de données, vous l'esprit. C'est comme un tableau, mais réside dans la RAM si
temp_buffers
est placé assez haut, n'est visible que dans l'état actuel des session et meurt à la fin de celui-ci. Quand ils sont créés avecON COMMIT DROP
il meurt à la fin de la transaction.Temp tables vient en premier dans le défaut schéma chemin de recherche, se cachant d'autres tableaux du même nom, à moins que le schéma qualifiés:
Si vous voulez dynamique, vous être à la recherche pour
CREATE VIEW
- une histoire complètement différente.Le standard SQL définit également, et Postgres prend également en charge:
.SELECT INTO
Mais son utilisation est déconseillée:
Il n'y a vraiment pas besoin d'un deuxième syntaxe de la variante et
SELECT INTO
est utilisé pour l'affectation dansplpgsql
, où la syntaxe SQL est par conséquent pas possible.Connexes:
CREATE TABLE COMME (...)
copie uniquement les structure partir d'une autre table et pas de données:Si vous avez besoin d'un "temporaire" de la table juste dans le but d'une seule requête (puis le jeter) un "table dérivée" dans un CTE ou d'une sous-requête est livré avec beaucoup moins de frais généraux:
select into
est découragé....http://www.postgresql.org/docs/9.2/static/sql-createtable.html
CREATE [TEMP] TABLE <target-table> LIKE <source-table>
crée la table, mais ne pas le remplir avec des données, de sorte que n'est pas ce que l'OP a demandé à propos.