postgresql 用 like 可以 复制结构包括主键约束
create tabletablename ( like tablename INCLUDING INDEXES INCLUDING COMMENTS);
PostgreSQL 动态表复制(CREATE TABLE...LIKE):
https://blog.csdn.net/wlwlwlwl015/article/details/52493197
这篇文章讲得很好
一、只复制表结构
1、CREATE TABLE bas_cm_customer_bak AS(SELECT * from bas_cm_customer limit 0)
2、CREATE TABLE bas_cm_customer_bak (LIKE bas_cm_customer)
3.
-- inherits 不继承主键
CREATE TABLE "tablename"() INHERITS ("tablename");
二、复制表结构及数据
1、CREATE TABLE bas_cm_customer_bak AS(SELECT * FROM bas_cm_customer)
2、INSERT INTO bas_cm_customer_bak (field1,field...) SELECT field1,field2... FROM bas_cm_customer
如果是字段全量复制的话,则简化为:
INSERT INTO bas_cm_customer_bak SELECT * FROM bas_cm_customer
3、SELECT * INTO bas_cm_customer_bak FROM bas_cm_customer
其中 SELECT * INTO bas_cm_customer_bak IN 'Backup.mdb' FROM bas_cm_customer 是用于向另一个数据库
中拷贝表,此语句是全量拷贝表结构和数据,如果只需要其中某些域的话:
SELECT field1,field2 INTO bas_cm_customer_bak FROM bas_cm_customer
这三个语句在建表复制数据的时候,都可以通过增加WHERE条件进行数据筛选,当增加筛选条件后,没有数据符合要求,那么就是复制表结构。
2、3点释义:SELECT INTO FROM 和 INSERT INTO SELECT都是用来复制表的,主要区别在于,前者要求目标表
不存在,因为在插入时会自动创建,而后者则要求目标表存在
————————————————