SELECT INTO和INSERT INTO SELECT兩種表復制語句都可以用來復制表與表之間的數據,但是它們之間也有區別。
建表語句:
bas_custom_rel表
CREATE TABLE "public"."bas_custom_rel" (
"uuid" int8 NOT NULL,
"kunnrkh" varchar(100) COLLATE "default",
"zfdel" varchar(1) COLLATE "default",
"hkunnrkh" varchar(100) COLLATE "default",
"create_time" timestamp(6) NOT NULL,
"modify_time" timestamp(6),
"sync_status" varchar(1) COLLATE "default",
"sync_time" timestamp(6),
"ret_code" varchar(100) COLLATE "default",
"ret_message" varchar(5000) COLLATE "default",
"z_date" timestamp(6),
CONSTRAINT "pk_bas_custom_rel" PRIMARY KEY ("uuid")
)
cust_rel表:
CREATE TABLE "public"."cust_rel" (
"son" varchar(255) COLLATE "default",
"pp" varchar(255) COLLATE "default"
)
1. INSERT INTO FROM語句
語句形式為:Insert into Table2(field1,field2,…) select value1,value2,… from Table1
要求目標表Table2必須存在,由於目標表Table2已經存在,所以我們除了插入源表Table1的字段外,還可以插入常量。示例如下:
INSERT INTO bas_custom_rel (
uuid,
kunnrkh,
zfdel,
hkunnrkh,
create_time,
modify_time,
sync_status,
sync_time,
ret_code,
ret_message,
z_date
) SELECT
nextval('cust_rel_seq') AS uuid,
son,
'' AS zfdel,
coalesce(pp,'-1') AS pp,
now() as create_time,
NULL AS modify_time,
0 AS sync_status,
NULL AS sync_time,
0 as ret_code,
'' AS ret_message,
now()
FROM
cust_rel;
2.SELECT INTO FROM語句
語句形式為:SELECT vale1, value2 into Table2 from Table1
要求目標表Table2不存在,因為在插入時會自動創建表Table2,並將Table1中指定字段數據復制到Table2中。示例如下:
postgres=# drop table tb101; DROP TABLE
postgres=#
postgres=# select * into tb101 from tb100 where id<5; SELECT 4
postgres=#
postgres=# select * from tb101; id | name ----+------ 1 | aa 2 | aa 3 | aa 4 | aa (4 rows)
3、復制表結構及數據到新表
CREATE TABLE 新表 SELECT * FROM 舊表
---------------------
作者:小城南
來源:CSDN
原文:https://blog.csdn.net/cainiaobulan/article/details/83147418
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!