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