很多 "invalid command \N" 当我尝试恢复 PostgreSQL 转储时

A lot of "invalid command \N" when I try to restore PostgreSQL dump

我在 mac 上备份了一个数据库,并尝试在 ubuntu 的计算机上恢复它。 当我执行

psql -U uname -d dbname -f ~/dump_from_mac

我有很多错误消息,例如 "invalid command \N" 和 "relation 'SomeTable' does not exist"。 我的问题与 Can't copy table to another database with pg_dump 非常相似 但我不知道如何修复我的转储文件。 我擦除我的 mac 并且无法创建新的转储。

我的问题通过设置 postgresql-contrib 包解决了

sudo apt-get install postgresql-contrib

并在我的数据库中创建扩展 uuid-ossp

CREATE EXTENSION "uuid-ossp";

默认情况下,我的数据库没有此扩展名,psql 无法从我的转储文件执行 uuid_generate_v1() 函数。 在大多数情况下,安装 postgresql-contrib 就足够了,但有时问题也可能出在一些遗漏的扩展中。

这是我的解决方案:

1) pg_dump 插入:

pg_dump dbname --username=usernamehere --password --no-owner --no-privileges --data-only --inserts -t 'schema."Table"' > filename.sql

2) psql(恢复你转储的文件)

psql "dbname=dbnamehere options=--search_path=schemaname" --host hostnamehere --username=usernamehere -f filename.sql >& outputfile.txt

注意-1 ) 确保添加输出文件会提高导入速度。

注 2 ) 在使用 psql 导入之前,不要忘记使用完全相同的名称和列创建 table。