使用pg_dump和load工具备份和加载带有UUID列的PostgreSQL表

6

我想使用postgresql v9.5数据库,并使用sql转储 pg_dump来移动表格:

pg_dump --host=localhost --username=postgres --port=5432 --dbname=my_db -t ,my_table > /D:\my_table.sql
表格中有一个UUID标识符
列:
CREATE TABLE public.my_table
(
  uuid uuid NOT NULL DEFAULT gen_random_uuid(),
  created timestamp with time zone DEFAULT now(),
  content text,
)

导入.sql文件

对于没有UUID列的表,可以使用以下方法:

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

针对具有UUID列的特定表格,我在第一个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
\.

你能在转储文件中显示出错的行吗? - Laurenz Albe
更新了我的问题。 - Joost Döbken
2
如果表不大,使用“--inserts”来避免“COPY”问题吗? - Vao Tsun
1个回答

1

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

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

版权属于Vao Tsun


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接