Sab*_*san 6 postgresql postgresql-9.2
我的pg_dump返回约束是在转储文件末尾的alter query中.我希望那些在create table(...)部分中.
例如.我使用约束创建了一个如下表:
CREATE TABLE "test_constraints" (
"id" serial NOT NULL,
"user_id" bigint NOT NULL,
PRIMARY KEY ("id"),
CONSTRAINT "user_id" UNIQUE ("user_id")
);
Run Code Online (Sandbox Code Playgroud)
并使用以下命令进行模式转储:
pg_dump.exe -U postgres -t "test_constraints" -f "D:\dump.sql" "postgres"
Run Code Online (Sandbox Code Playgroud)
我创建它时是否可以使表架构原样(或接近那个)?我的意思是约束需要在create table(...)中;
不,这是不可能的。实际上,这样做是有原因的。
问题是转储通常用于批量加载,因此您希望在加载数据后创建索引。这意味着,实际上,您希望通过三个步骤来做到这一点:
现在的问题是某些约束是通过索引在内部处理的,因此需要在第 3 阶段创建它们。即,出于性能原因,您希望在批量加载后创建主键和唯一约束。