pg_dump 并使用 UUID 列加载 table PostgreSQL

pg_dump and load table with UUID column PostgreSQL

使用 postgresql v9.5 数据库,我想使用 sql 转储 pg_dump:

移动 table
pg_dump --host=localhost --username=postgres --port=5432 --dbname=my_db -t ,my_table > /D:\my_table.sql

table 有一个 UUID identifier 列:

CREATE TABLE public.my_table
(
  uuid uuid NOT NULL DEFAULT gen_random_uuid(),
  created timestamp with time zone DEFAULT now(),
  content text,
)

加载.sql

这适用于没有 UUID 列的 tables:

cd C:\Program Files (x86)\PostgreSQL.5\bin
psql --dbname=my_db --host=localhost --username=postgres -w --port=5432 -f D:\my_table.sql

但是对于具有 UUID 列的特定 table,我在第一个 UUID 的位置出现以下错误:

psql:D:\my_table.sql:1327: ERROR: syntax error at or near "c9ccacd8"

LINE 1: c9ccacd8-7e37-40a2-8eca-e589dbe42a59 2016-06-04 09:48:00.676...

sql 文件

以下是 my_table.sql 文件中引用的行:

ALTER TABLE my_table OWNER TO postgres;

COPY my_table (uuid, created, content) FROM stdin;
c9ccacd8-7e37-40a2-8eca-e589dbe42a59    2016-06-04 09:48:00.676592+00   \N
40ce5512-f566-495f-b709-0b2ec45e09c6    2016-06-04 09:48:57.148606+00   \N
\.

您可以添加 --inserts 标记以避免 COPY 问题

pg_dump --inserts --host=localhost --username=postgres --port=5432 --dbname=my_db -t ,my_table > /D:\my_table.sql

© 至 Vao Tsun