Вероятно искате CREATE TABLE AS
- работи и за TEMPORARY
(TEMP
) таблици:
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;
Това създава временна таблица и копира данни в нея. Статична моментна снимка на данните, имайте предвид. Това е точно като обикновена таблица, но се намира в RAM, ако temp_buffers
е поставена достатъчно високо. Вижда се само в рамките на текущата сесия и умира в края му. Когато е създаден с ON COMMIT DROP
той умира в края на транзакцията .
Временните таблици са на първо място в пътеката за търсене на схема по подразбиране , скривайки други видими таблици със същото име, освен ако не е квалифицирано по схема:
- Как search_path влияе върху разделителната способност на идентификатора и „текущата схема“
Ако искате динамичен , ще търсите CREATE VIEW
- съвсем различна история.
Стандартът SQL също дефинира, а Postgres също поддържа: . Но използването му е обезкуражено:SELECT INTO
Най-добре е да използвате
CREATE TABLE AS
за тази цел в нов код.
Наистина няма нужда от втори вариант на синтаксис и SELECT INTO
се използва за присвояване в plpgsql
, където SQL синтаксисът следователно не е възможен.
Свързано:
- Комбинирайте две таблици в нова, така че избраните редове от другата да бъдат игнорирани
- ГРЕШКА:входните параметри след един със стойност по подразбиране също трябва да имат стойности по подразбиране в Postgres
CREATE TABLE LIKE (...)
копира само структурата от друга таблица и няма данни:
LIKE
Клаузата посочва таблица, от която новата таблица автоматично копира всички имена на колони, техните типове данни и техните ненулеви ограничения.
Ако имате нужда от "временна" таблица само за целите на една заявка (и след това я изхвърлете), "производна таблица" в CTE или подзаявка идва със значително по-малко допълнителни разходи:
- Да промените ли ръчно плана за изпълнение на заявката в postgresql?
- Комбинирайте две SELECT заявки в PostgreSQL
- Използвайте повторно изчислена избрана стойност
- Множество CTE в една заявка
- Актуализиране с резултати от друг sql