PostgreSQL表间复制语句

本文介绍了PostgreSQL中的两种表复制方法:INSERT INTO SELECT和SELECT INTO。INSERT INTO SELECT用于将数据从一个现有表复制到另一个已存在的表,而SELECT INTO则会在复制数据的同时创建一个新的表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 作者:瀚高PG实验室 (Highgo PG Lab)

在PostgreSQL中的SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据。

1.  INSERT INTO FROM语句

语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1

要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:

highgo=# insert into test1 select id,note from test;

错误:  42P01: 关系 "test1" 不存在

第1行insert into test1 select id,note from test;

                 ^

highgo=# create table test1(id integer,note character varying);

CREATE TABLE

highgo=# insert into test1 select id,note from test;

INSERT 0 6

highgo=# select * from test1;

 id |   note

----+-----------

  1 | abcdefgh

  2 | abcdxyzh

  3 | 123defgh

  4 | ab_cdefgh

  5 | ab%cdxyzh

  6 | abcdhadsw

(6 行记录)

2.  SELECT INTO FROM语句

语句形式为:SELECT vale1, value2 into Table2 from Table1。要求目标table2不存在,在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

highgo=# \d

                 关联列表

    架构模式    |  名称  |  类型  | 拥有者

----------------+--------+--------+--------

 oracle_catalog | dual   | 视图   | highgo

 public         | people | 数据表 | highgo

 public         | test   | 数据表 | highgo

 public         | test1  | 数据表 | highgo

(4 行记录)

highgo=# select id,note into test2 from test;

SELECT 6

highgo=# \d

                 关联列表

    架构模式    |  名称  |  类型  | 拥有者

----------------+--------+--------+--------

 oracle_catalog | dual   | 视图   | highgo

 public         | people | 数据表 | highgo

 public         | test   | 数据表 | highgo

 public         | test1  | 数据表 | highgo

 public         | test2  | 数据表 | highgo

(5 行记录)

highgo=# select id,note into test2 from test;

错误:  42P07: 关系 "test2" 已经存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值