Jay*_*Cee 6 postgresql postgresql-9.3
当我执行此命令时:
SELECT language, title FROM cms_title WHERE language != 'en' AND title != 'Blog';
Run Code Online (Sandbox Code Playgroud)
我看到要从开发服务器上的数据库复制到生产服务器的页面.
因此,我的目标是转储这些特定页面,然后将它们插入生产数据库中.
我的问题是:有可能吗?这是最好的做法/做法吗?
非常感谢您提出我的请求所花费的时间.
Gab*_*ger 12
我可以看到4种方法:
1.将列导出为.csv第二个DB并从中导入
COPY (
SELECT language, title FROM cms_title WHERE language != 'en' AND title != 'Blog'
) TO '/path/to/csv/cms_title_dump.csv' WITH CSV HEADER DELIMITER ';';
Run Code Online (Sandbox Code Playgroud)
把它放在该.csv服务器上的目标服务器可访问的路径中执行导入:
COPY cms_title FROM '/path/to/csv/cms_title_dump.csv' DELIMITER ';' CSV;
Run Code Online (Sandbox Code Playgroud)
或\ copy以在psql + db中使用该命令
2. 在seccond DB上使用pg_dump和restore(pg_restore)转储它
倾倒:
pg_dump opencare -F c -h db_address -U db_user -p sb_port -t cms_title -f /path/to/dump/cms_title.dump;
Run Code Online (Sandbox Code Playgroud)
恢复:
pg_restore -h dest_db_address -U dest_db_user -p dest_dp_port -d db_name /path/to/dump/cms_title.dump;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您必须记住pg_dump执行WHOLE表数据的转储.您无法从表中选择要转储的行子集.因此,当从ona DB到另一个DB进行表镜像时,此选项是合适的.
3.使用dblinkPostgreSQL模块执行coss-database查询
4.生成INSERT查询并在第二台服务器上执行:
`SELECT
'INSERT INTO cms_title(language, title) VALUES '
|| string_agg( '(' || language || ', '|| title || ')', ',' )
|| ';'
FROM cms_title WHERE language != 'en' AND title != 'Blog';`
Run Code Online (Sandbox Code Playgroud)
sta*_*nov 10
我这样做的方式如下:
1.创建转储:
psql -hdbhost1 -ddbname -Udbuser -c "copy(SELECT language, title FROM cms_title WHERE language != 'en' AND title != 'Blog') to stdout" > dump.sql
Run Code Online (Sandbox Code Playgroud)
2.import dump:
psql -hdbhost2 -ddbname -Udbuser -c 'copy cms_title from stdin' < dump.sql
Run Code Online (Sandbox Code Playgroud)
这会将导入的数据附加到表中.
| 归档时间: |
|
| 查看次数: |
8016 次 |
| 最近记录: |