很多 "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。
我在 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。