Tim*_*Tim 3 postgresql pg-restore
我尝试学习如何将数据库导入PostgreSQL。
我的尝试失败了,我使用pg_restore -C ... -d ...一个命令将新数据库的创建和从文件导入到新数据库结合起来:
$ sudo -u postgres pg_restore -C -d postgres dvdrental.tar
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2194; 1262 17355 DATABASE pagila postgres
pg_restore: [archiver (db)] could not execute query: ERROR: invalid locale name: "English_United States.1252"
Command was: CREATE DATABASE pagila WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252';
pg_restore: [archiver (db)] could not execute query: ERROR: database "pagila" does not exist
Command was: ALTER DATABASE pagila OWNER TO postgres;
pg_restore: [archiver (db)] could not reconnect to database: FATAL: database "pagila" does not exist
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我想知道为什么我的第一次尝试失败了?
有没有办法只运行一个命令?
该文件说:
-C——创建
在恢复之前创建数据库。如果还指定了 --clean,则在连接到目标数据库之前删除并重新创建目标数据库。
甚至提供一个例子:
假设我们已将名为 mydb 的数据库转储到自定义格式的转储文件中:
Run Code Online (Sandbox Code Playgroud)$ pg_dump -Fc mydb > db.dump要删除数据库并从转储中重新创建它:
Run Code Online (Sandbox Code Playgroud)$ dropdb mydb $ pg_restore -C -d postgres db.dump-d 开关中指定的数据库可以是集群中现有的任何数据库;pg_restore 仅使用它为 mydb 发出 CREATE DATABASE 命令。使用 -C ,数据始终恢复到转储文件中显示的数据库名称中。
谢谢。
更新:
再次感谢。toc.dat我发现转储中的二进制文件包含
CREATE DATABASE pagila WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'English_United States.1252' LC_CTYPE = 'English_United States.1252';`
Run Code Online (Sandbox Code Playgroud)
是否可以对其进行修改以使其sudo -u postgres pg_restore -C -d postgres dvdrental.tar工作?
请注意,我有一个可行的解决方案:
单独创建新数据库psql并从文件导入到新数据库:
template1=# CREATE DATABASE dvdrental;
CREATE DATABASE
$ sudo -u postgres pg_restore -d dvdrental dvdrental.tar
$
Run Code Online (Sandbox Code Playgroud)
您的导入失败,因为您尝试导入转储的操作系统不知道区域设置English_United States.1252。操作系统不是 Windows,或者 Windows 没有安装该区域设置。
pg_restore -C尝试以与原始系统上相同的方式创建数据库,这是不可能的。显式创建数据库是有效的,因为它使用现有的区域设置。
除了存在区域设置之外,没有其他方法可以使该CREATE DATABASE命令成功,因此如果不可能,则必须运行两个命令来恢复转储。
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |