标签: pg-dump

恢复Postgresql数据库

我是否总是必须删除然后创建数据库以从pg_dump文件还原它?如果我不删除数据库,则正在还原的数据将添加到数据库中的当前数据,即使某些寄存器已存在于数据库中(因此数据也是重复的).

postgresql pg-dump database-restore

5
推荐指数
1
解决办法
2424
查看次数

pgs中的pg_dump版本不匹配

运行该rake db:structure:dump命令时,我遇到以下错误:

Larson-2:app larson$ rake db:structure:dump
pg_dump: server version: 9.1.3; pg_dump version: 9.0.4
pg_dump: aborting because of server version mismatch
rake aborted!
Error dumping database
Run Code Online (Sandbox Code Playgroud)

我怎样才能更新pg_dump?我安装了pg 9.1.3,有没有办法将Rails里面的引用更新到新版本?

当我尝试通过自制软件更新postgres时,我得到以下输出:

Larson-2:app larson$ sudo brew upgrade postgresql
Password:
Error: postgresql already upgraded
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails pg-dump postgresql-9.1 ruby-on-rails-3.2

5
推荐指数
1
解决办法
6297
查看次数

使用pg_dump只能使用compress参数进行备份损坏?

我使用此命令备份200GB数据库(postgres 9.1,win7 x64):

pg_dump -Z 1 db_name > backup

它创建了16GB的文件,我觉得很好,因为以前的备份工作(并且由ext工具打包)具有相似的大小.现在,当我尝试使用时恢复到PG9.2时pg_restore,我收到错误:

input file does not appear to be a valid archive

pg_restore -Ft:

[tar archiver] corrupt tar header found in ? (expected 13500752, com
puted 78268) file position 512

Gzip也表明它已经损坏了.当我在Total Commander中打开备份文件时,内部文件只有1.8GB.当我在寻找解决方案时,-Cf可能需要使用参数进行转储.

现在哪种格式的文件?它只是tar或gzip(winrar显示gzip)?有没有办法正确地恢复它或者它以某种方式被破坏(转储时没有错误)?可能是由于tar或gzip的文件大小限制?

postgresql backup restore pg-dump pg

5
推荐指数
2
解决办法
5005
查看次数

pg_dump 没有对对象的评论?

有没有办法执行 pg_dump 并排除表/视图和列的 COMMENT ON ?

我广泛使用 COMMENT ON 命令来描述所有对象,并且经常在其中包含换行符以获得更清晰的描述,例如:

COMMENT ON TABLE mytable1 IS 'MAIN TABLE...
NOTES:
1. ...
2. ...
3. ...
';
Run Code Online (Sandbox Code Playgroud)

但是,由于转储中也有换行符,我不能简单地使用 grep -v 'COMMENT ON' 命令删除注释。

还有其他方法可以从转储中快速删除这些 COMMENT ON 吗?

postgresql pg-dump

5
推荐指数
2
解决办法
3984
查看次数

尝试还原PostgreSQL转储时出现很多“无效命令\ N”

我在Mac上进行了数据库备份,并尝试在具有ubuntu的计算机上还原该数据库。当我执行

psql -U uname -d dbname -f ~/dump_from_mac
Run Code Online (Sandbox Code Playgroud)

我有很多错误消息,例如“无效命令\ N”和“关系'SomeTable'不存在”。我的问题与无法使用pg_dump将表复制到另一个数据库非常相似, 但是我不知道如何解决我的转储文件。我擦拭了Mac,无法进行新的转储。

postgresql dump pg-dump database-restore

5
推荐指数
1
解决办法
8885
查看次数

pg_dump 串行数据类型问题

有人可以向我解释为什么使用以下脚本创建 PostgreSQL 表:

CREATE TABLE users
(
  "id" serial NOT NULL,
  "name" character varying(150) NOT NULL,
  "surname" character varying (250) NOT NULL,
  "dept_id" integer NOT NULL,
  CONSTRAINT users_pkey PRIMARY KEY ("id")
)
Run Code Online (Sandbox Code Playgroud)

pg_dump以以下格式转储:

CREATE TABLE users(
      "id" integer NOT NULL,
      "name" character varying(150) NOT NULL,
      "surname" character varying (250) NOT NULL,
      "dept_id" integer NOT NULL
    );

ALTER TABLE users OWNER TO postgres;

CREATE SEQUENCE "users_id_seq"
        START WITH 1
        INCREMENT BY 1
        NO MINVALUE
        NO MAXVALUE
        CACHE 1;

ALTER TABLE …
Run Code Online (Sandbox Code Playgroud)

postgresql pg-dump auto-increment

5
推荐指数
1
解决办法
3175
查看次数

postgres pg_restore 追加数据

我有一个使用pg_dump自定义格式创建的 pg 备份。我正在尝试使用pg_restore仅数据恢复到已经有一些数据的数据库中。这在 DB 和转储中存在相同数据(某些行)的情况下失败。有没有办法忽略这些行并继续恢复其余数据?

postgresql pg-dump pg-restore

5
推荐指数
0
解决办法
530
查看次数

使用一个INSERT语句而不是每行INSERT创建PostgreSQL转储

我尝试使用pg_dump进行表数据转储,如下所示:

pg96\bin\pg_dump ... --format plain --section data --column-inserts --file obj.account.backup --table obj.account database_xyz
Run Code Online (Sandbox Code Playgroud)

而不是得到

INSERT INTO obj.account(name, email, password) VALUES ('user1','email1','password1');
INSERT INTO obj.account(name, email, password) VALUES ('user2','email2','password2');
Run Code Online (Sandbox Code Playgroud)

我想得到

INSERT INTO obj.account (name, email, password) VALUES 
('user1','email1','password1'),
('user2','email2','password2');                                                  
Run Code Online (Sandbox Code Playgroud)

有没有没有任何非PostgreSQL后处理的方法吗?

postgresql backup pg-dump insert-into

5
推荐指数
1
解决办法
432
查看次数

pg_dump而不设置search_path

当我用于pg_dump从数据库导出架构时,它会在开头添加以下行:

SELECT pg_catalog.set_config('search_path', '', false);
Run Code Online (Sandbox Code Playgroud)

是否可以设置一个pg_dump不添加此行的选项?稍后当我尝试执行其他没有模式限定符的SQL命令时,这会引起问题。

这是pg_dump我现在正在使用的命令:

pg_dump -O -x -h <db-host> -p <db-port> -U <db-user> -d <db-name> --schema public --schema-only > public-schema.sql
Run Code Online (Sandbox Code Playgroud)

postgresql pg-dump

5
推荐指数
1
解决办法
767
查看次数

转储文件中视图的预定义的目的是什么

我正在处理的项目中,我们正在为Active Record转储器使用:sql架构格式(以支持触发器等更复杂的逻辑)。

我们有很多视图,并且我可以在database/structure.sql文件中看到其中一些具有带有的“预定义”架构,NULL例如:

CREATE VIEW public.my_view AS
  SELECT
    NULL::integer AS record_id,
    NULL::integer AS another_record_id,
    NULL::double precision AS some_field;
Run Code Online (Sandbox Code Playgroud)

然后,在数千行之后,使用以下命令添加定义:

CREATE OR REPLACE VIEW public.my_view AS
  -- actual query
Run Code Online (Sandbox Code Playgroud)

我在SQL查询中看不到架构“预定义”和定义之间对视图的任何引用。另外,还有其他立即创建的视图(没有该模式“ predefinition”)。

我在查看Active Record文档,但找不到任何提示。Rails pg_dump在后台使用,但我在pg_dump文档中也看不到任何相关内容。

为什么有些视图需要预先预定义架构,而另一些视图则不需要,即使在database/structure.sql文件中的预定义和实际定义之间没有引用它们时也是如此?使用其他结构(例如实体化视图等)时,是否可以防止某些竞赛条件?

postgresql activerecord ruby-on-rails pg-dump

5
推荐指数
1
解决办法
58
查看次数