如何基于表的存在使用sql复制表架构?

如何基于表的存在使用sql复制表架构?,sql,postgresql,Sql,Postgresql,我想复制表架构,但前提是目标表尚不存在: CREATE TABLE IF NOT EXISTS my_table_secondary as select * from my_table_primary 问题:如果存在my_secondary_表,则运行此操作会导致: 错误:位于as的SyntaxerError 我该怎么做才能使这个sql语句正常工作? postgres 9.4要复制表的模式,需要完全不同的语法 create table if not exists my_table_second

我想复制表架构,但前提是目标表尚不存在:

CREATE TABLE IF NOT EXISTS my_table_secondary as select * from my_table_primary
问题:如果存在my_secondary_表,则运行此操作会导致: 错误:位于as的SyntaxerError

我该怎么做才能使这个sql语句正常工作? postgres 9.4要复制表的模式,需要完全不同的语法

create table if not exists my_table_secondary (
  like my_table_primary including all
);
include ALL是include DEFAULTS的缩写形式,包括 约束,包括索引,包括存储,包括注释

它不复制外键约束。看见搜索LIKE子句。

尝试以下方法:

CREATE OR REPLACE VIEW my_view AS SELECT * FROM my_table_primary;

CREATE TABLE IF NOT EXISTS my_table_secondary LIKE my_view;

INSERT INTO my_table_secondary 
SELECT * FROM my_view 
WHERE NOT EXISTS ( SELECT * FROM my_table_secondary );

更多关于创建表。。。比如:

这真的是一个Java问题吗?