我正在新的Ubuntu安装上设置Rails应用程序,并使用rake db:create:all创建Postgres数据库.在databases.yml中,所有数据库的密码字段都留空.我正在尝试从应用程序的生产部署中捕获的转储的pg_restore,但我一直被提示输入密码.我有一种感觉这与pg_hba.conf文件中的设置有关,但我不记得我在之前的Ubuntu安装中如何设置它们.如何让Postgres信任pg_restore以获取本地连接?或者有什么不同导致这个问题?
我有两个数据库在不同时区的不同服务器上运行.有几个表包含timestamp with timezone.
我需要从一个数据库转储数据,并使用正确的时间戳和正确的时区将其导入另一个数据库.
我使用以下命令来转储数据:
pg_dump -a DB_NAME > dump.sql
Run Code Online (Sandbox Code Playgroud)
我看到数据采用旧时间戳和时区格式: 2013-11-29 14:30:00+02
然后我使用命令到另一台服务器来恢复转储:
psql -d DB_NAME -f dump.sql
Run Code Online (Sandbox Code Playgroud)
我看到时间戳和时区来自旧服务器 - 我认为这是正常的.
然后我尝试在dump.sql的开头添加以下命令
SET timezone ...
Run Code Online (Sandbox Code Playgroud)
但仍然行不通.:(
这是一次性操作.一旦传输数据不需要同步.有没有办法使用pg_dump和pg_restore或类似的方式进行此类转换?
我有一个比较两hstore列的视图.
当我转储和还原此数据库时,还原失败并显示以下错误消息:
Importing /tmp/hstore_test_2014-05-12.backup...
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 172; 1259 1358132 VIEW hstore_test_view xxxx
pg_restore: [archiver (db)] could not execute query: ERROR: operator does not exist: public.hstore = public.hstore
LINE 2: SELECT NULLIF(hstore_test_table.column1, hstore_test_table....
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Command was: CREATE VIEW hstore_test_view AS
SELECT NULLIF(hstore_test_table.column1, hstore_test_table.column2) AS "nullif"
FROM hst...
pg_restore: [archiver …Run Code Online (Sandbox Code Playgroud) 我有一个数据库的备份,我将恢复到在docker容器内运行的postgres数据库.
我在OS X上使用的是docker-
machine.Postgres图像是postgres:9.4.
这是我到目前为止提出的脚本:
pg_restore --verbose --clean --no-acl --no-owner \
-h tcp://`docker-machine ip default`:5432 \
-U postgres \
-d tonsser-api_development latest.dump
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我收到错误:
pg_restore: connecting to database for restore
pg_restore: [archiver (db)] connection to database "tonsser-api_development" failed: could not translate host name "tcp://192.168.99.100:5432" to address: nodename nor servname provided, or not known
Run Code Online (Sandbox Code Playgroud) 我试图用pg_restore从备份文件恢复表.但是我得到了上面提到的错误.我到处都读到需要升级版的postgres.我将我的升级到9.6.8-1然后升级到10.3-1.两者都没用.有没有人有一个详细的程序来解决使用Windows操作系统的这个问题?提前致谢
这是第一次涉足 PostgreSQL 备份(数据库转储),我一直在研究不同的 pgdump 格式、其他 pgdump 选项和 pgdumpall。对于希望对两个数据库进行每小时转储(将覆盖以前的转储)的 Postgres 初学者来说,这两个数据库包含表触发器和每个数据库中的两个不同模式,备份格式和选项是什么可以轻松实现以下目标:
包括备份和恢复的示例命令。
欢迎任何其他有用的 pgdump/pgrestore 建议。
我在 Windows 10 上使用 pg_restore 和在 Linux 上制作的转储文件。
我在网上搜索,但我没有找到答案。
[新]:我在我的计算机上安装了 Ubuntu 以使用 pg_restore 但是当我发送
pg_restore -d mydatabase /home/user/Documents/dumpfile.dump
Run Code Online (Sandbox Code Playgroud)
命令行被阻止。
有人有这个问题吗?
我正在处理一个包含 700 多百万行的表(没有分区)。我想将此数据加载到另一个数据库,因此我使用了以下 pg_dump 命令,
pg_dump -Fc --column-inserts --data-only --table='tname' -U
postgres -d dbname > /root/tname_experiment_inserts_custom_format.dump
Run Code Online (Sandbox Code Playgroud)
在目标系统上我使用了以下命令,
pg_restore -d dest_dbname -U postgres -j 7 /root/tname_experiment_inserts_custom_format.dump
Run Code Online (Sandbox Code Playgroud)
目标数据库已经有我尝试恢复的表,因此我使用 TRUNCATE,然后删除了所有索引。目标系统有32GB物理内存,我在postgres配置文件中做了以下设置,
log_min_duration_statement = -1
autovacuum = off
maintenance_work_memory = 7gb
wal_level = minimal
fsync = off
full_page_writes= off
synchronous_commit= off
max_wal_size= 20GB
wal_buffers= 16MB
Run Code Online (Sandbox Code Playgroud)
当我对 pg_restore 进行计时时,一个小时内仅插入了大约 1600 万行。这意味着恢复数据需要 40 多个小时 (!)。之后,我必须创建我删除的索引和外部约束,这可能还需要几个小时。我有一种感觉,我可以做一些不同的事情,让整个过程更快。请给我任何可以帮助我提高这个过程效率的指示。我还想提一下,我已经看过 COPY,但因为它不维护主键的顺序,所以这个选项对我来说不好。如果我不知道 COPY 的任何特殊设置可以保留数据的顺序,那么很高兴知道!
整个事情的目的是更改列的某些数据类型,当使用 alter table alter columns 查询完成时,也花费了类似的时间。
我有一个安装了 postgres 9.5 的 ubuntu 18.04 。
我的数据库“mydb”安装了 hstore。当我执行“\dx store”时,我确实有
List of installed extensions
Name | Version | Schema | Description
--------+---------+--------+--------------------------------------------------
hstore | 1.3 | public | data type for storing sets of (key, value) pairs
(1 row)
Run Code Online (Sandbox Code Playgroud)
当我使用某个备份文件执行 pg_restore 时,会创建一个也称为“mydb”的新模式,但它不包含“hstore”扩展名。“\dx”命令的结果是相同的。hstore 已经在我的 template1 中了。
pg_restore 失败并显示
pg_restore:[archiver(db)]无法执行查询:错误:类型“hstore”不存在
谁能指出问题出在哪里?
谢谢
我试图通过以下命令从 sql 文件在远程服务器上创建一个新数据库 (analysis_db):
pg_restore -d analyses_db byoryn_resource.sql
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
pg_restore:[归档器]输入文件似乎是文本格式转储。请使用 psql。`
当我尝试按照说明操作时:(来自/sf/answers/2844262151/)
要将此类脚本重新加载到名为 newdb 的(新创建的)数据库中:
$ psql -d newdb -f db.sql
我收到了:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
作为菜鸟,我不知道如何解决这个问题。SQL 文件应该没问题,因为它已提供。