Jin*_*Kim 29 sql database postgresql
有没有一种简单的方法在PostgreSQL 8.1中创建数据库或模式的副本?
我正在测试一些软件,它对数据库中的特定模式进行了大量更新,我想复制它,以便我可以对原始模块进行一些比较.
Jor*_*nes 33
如果它位于同一服务器上,则只需使用带有TEMPLATE参数的CREATE DATABASE命令.例如:
Ali*_*ani 11
如果必须将架构从本地数据库复制到远程数据库,则可以使用以下两个选项之一.
选项A.
将架构从本地数据库复制到转储文件.
pg_dump -U postgres -Cs database > dump_file
Run Code Online (Sandbox Code Playgroud)将转储文件从本地服务器复制到远程服务器.
scp localuser@localhost:dump_file remoteuser@remotehost:dump_file
Run Code Online (Sandbox Code Playgroud)连接到远程服务器.
ssh remoteuser@remotehost
Run Code Online (Sandbox Code Playgroud)将架构从转储文件复制到远程数据库.
psql -U postgres database < dump_file
Run Code Online (Sandbox Code Playgroud)选项B.
将架构直接从本地数据库复制到远程数据库,而不使用中间文件.
pg_dump -h localhost -U postgres -Cs database | psql -h remotehost -U postgres database
Run Code Online (Sandbox Code Playgroud)
如果您想了解有关使用复制数据库的选项的更多信息,此博客文章可能对您有所帮助pg_dump
.
这可以通过运行以下命令来完成:
CREATE DATABASE [Database to create] WITH TEMPLATE [Database to copy] OWNER [Your username];
Run Code Online (Sandbox Code Playgroud)
填写您的数据库名称和用户名后,这将创建指定数据库的副本。只要您要复制的数据库没有其他活动连接,此操作就会起作用。如果还有其他活动连接,您可以先使用以下命令暂时终止连接:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '[Database to copy]'
AND pid <> pg_backend_pid();
Run Code Online (Sandbox Code Playgroud)
我为 Chartio 数据学校写的一篇好文章,更深入地介绍了如何做到这一点,可以在这里找到: https: //dataschool.com/learn/how-to-create-a-copy-of-a -postgresql 中的数据库使用 psql
归档时间: |
|
查看次数: |
37378 次 |
最近记录: |