我是否总是必须删除然后创建数据库以从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
我使用此命令备份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的文件大小限制?
有没有办法执行 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 吗?
我在Mac上进行了数据库备份,并尝试在具有ubuntu的计算机上还原该数据库。当我执行
psql -U uname -d dbname -f ~/dump_from_mac
Run Code Online (Sandbox Code Playgroud)
我有很多错误消息,例如“无效命令\ N”和“关系'SomeTable'不存在”。我的问题与无法使用pg_dump将表复制到另一个数据库非常相似, 但是我不知道如何解决我的转储文件。我擦拭了Mac,无法进行新的转储。
有人可以向我解释为什么使用以下脚本创建 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) 我有一个使用pg_dump自定义格式创建的 pg 备份。我正在尝试使用pg_restore仅数据恢复到已经有一些数据的数据库中。这在 DB 和转储中存在相同数据(某些行)的情况下失败。有没有办法忽略这些行并继续恢复其余数据?
我尝试使用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后处理的方法吗?
当我用于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) 我正在处理的项目中,我们正在为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文件中的预定义和实际定义之间没有引用它们时也是如此?使用其他结构(例如实体化视图等)时,是否可以防止某些竞赛条件?
pg-dump ×10
postgresql ×10
backup ×2
activerecord ×1
dump ×1
insert-into ×1
pg ×1
pg-restore ×1
restore ×1