最近我们有一个 SQL 需要导入到 PostgreSQL ,但数据格式使用的是用:
- --
- -- TOC entry 7877 (class 0 OID 21961)
- -- Dependencies: 904
- -- Data for Name: upload_references; Type: TABLE DATA; Schema: public; Owner: -
- --
-
- COPY public.upload_references (id, upload_id, target_type, target_id, created_at, updated_at) FROM stdin;
- 45698 760 Post 667 2023-05-05 04:11:35.947138 2023-05-05 04:11:35.947156
- 42396 6674 Post 3903 2023-05-05 01:59:37.447183 2023-05-05 01:59:37.447202
- 45699 761 Post 667 2023-05-05 04:11:35.947163 2023-05-05 04:11:35.947167
- \.
这样的格式。
这样的格式只能使用 psql 来进行导入。
注意到上面有一个 COPY FROM stdin;
这个是 psql 的专用导入格式。
导入的命令为:
psql -h 127.0.0.1 -p 5433 -U username -W -d database name < dump.sql
我们在导入的命令中加入了不少的参数。
有关 psql 的参数列表,请参考文章:PostgreSQL: Documentation: 15: psql.
上面的参数中:-h
服务器地址-p
数据库服务器运行端口-U
登录用户名-W
登录密码-d
数据库名
当导入开始后,在控制台上,会出现导入结果。
在导入的数据库,中我们发现 PostgreSQL 使用的 COPY Stdin。
在数据的默认有一个数据终止符 \.
。
这个数据终止符是不能丢的。