pg_dump将约束的表模式转储为压缩

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(...)中;

Chr*_*ers 5

不,这是不可能的。实际上,这样做是有原因的。

问题是转储通常用于批量加载,因此您希望在加载数据后创建索引。这意味着,实际上,您希望通过三个步骤来做到这一点:

  1. 定义表
  2. 加载数据
  3. 创建索引

现在的问题是某些约束是通过索引在内部处理的,因此需要在第 3 阶段创建它们。即,出于性能原因,您希望在批量加载后创建主键和唯一约束。