Postgresql的臨時表的用法


Postgresql的臨時表的用法

臨時表解釋:

PostgreSQL中的臨時表分兩種,一種是會話級臨時表,一種是事務級臨時表。在會話級臨時表中,數據可以存在於整個會話的生命周期中,在事務級臨時表中的數據只能存在於事務的生命周期中。

  1. 不管是會話級還是事務級的臨時表,當會話結束后,臨時表會消失,這和Oracle數據庫不同。Oracle數據庫當會話結束后,數據消失,而表依然存在。
  2. “ON COMMIT” 子句有三種形式,默認使用的是PRESERVE ROWS:
    (1)ON COMMIT PRESERVE ROWS 表示臨時表的數據在事務結束后保留;
    (2)ON COMMIT DELETE ROWS 表示臨時表的數據在事務結束后truncate掉;
    (3)ON COMMIT DROP 表示臨時表在事務結束后刪除。

臨時表與永久表相似,數據是存儲到數據庫里,相當於第二次直接關聯的是一個小表,查詢效率大大提高,表和數據可以根據需求是否保留。

法一創建臨時表,再批量導入數據

---創建臨時表
CREATE TEMPORARY TABLE temp_table (
  id int,
	name varchar(50),
	age int,
)ON COMMIT PRESERVE ROWS;
---驗證臨時表(無數據)
SELECT * FROM temp_table;
---批量導入數據
INSERT INTO temp_table(
 id,
 name,
 age
)
SELECT
	id,
	name,
	age
FROM target_table;

一般不使用法一,臨時表每個字段都需要自己定義,畢竟有些數據結果集需要先存儲起來再處理,也不能定義的字段都考慮到。

法二直接從結果集創建臨時表

---根據查詢的結果集生成臨時表不需要每個字段都定義
CREATE TEMPORARY TABLE temp_table AS (SELECT * FROM target_table);
---驗證臨時表
SELECT * FROM temp_table;
---刪除臨時表
DROP TABLE temp_table;

---本次使用完臨時表后臨時表和數據都保留
CREATE TEMPORARY TABLE temp_table ON COMMIT PRESERVE ROWS AS (SELECT * FROM target_table);
---本次使用完臨時表后臨時表保留數據清空
CREATE TEMPORARY TABLE temp_table ON COMMIT DELETE ROWS AS (SELECT * FROM target_table);
---本次使用完臨時表后自動刪除
CREATE TEMPORARY TABLE temp_table ON COMMIT DROP AS (SELECT * FROM target_table);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM