Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Postgres:将架构从内部服务器复制到部署服务器的脚本;每一步都不输入密码_Sql Server_Postgresql_Ubuntu_Passwords_Dbmigrate - Fatal编程技术网

Sql server Postgres:将架构从内部服务器复制到部署服务器的脚本;每一步都不输入密码

Sql server Postgres:将架构从内部服务器复制到部署服务器的脚本;每一步都不输入密码,sql-server,postgresql,ubuntu,passwords,dbmigrate,Sql Server,Postgresql,Ubuntu,Passwords,Dbmigrate,我想将我的数据库模式(只是模式;不是数据)从内部服务器复制到外部服务器。 我面临的问题是每一步都要输入密码。尽管复制的步骤非常简单,但我无法生成一个脚本来自动化整个过程 我现在所拥有的: 在内部服务器上: pg_dump -C -s --file=schema.txt {name} scp schema.txt prakhar@{external server}:/home/prakhar dropdb {name} createdb {name} psql --file=schema.txt

我想将我的数据库模式(只是模式;不是数据)从内部服务器复制到外部服务器。 我面临的问题是每一步都要输入密码。尽管复制的步骤非常简单,但我无法生成一个脚本来自动化整个过程

我现在所拥有的:

在内部服务器上:

pg_dump -C -s --file=schema.txt {name}
scp schema.txt prakhar@{external server}:/home/prakhar
dropdb {name}
createdb {name}
psql --file=schema.txt {name}
在外部服务器上:

pg_dump -C -s --file=schema.txt {name}
scp schema.txt prakhar@{external server}:/home/prakhar
dropdb {name}
createdb {name}
psql --file=schema.txt {name}
在每一步我都会被提示输入密码。 我想做两件事: 1:从外部服务器运行脚本,从内部服务器获取模式;或者反过来
2:将内部和外部服务器的密码合并到脚本为我处理的方式中。

我建议将这些命令包装到bash脚本中,并在每个脚本中,在运行命令之前,添加以下行:

export PGPASSWORD=<password>
导出密码=
您要使用的密码在哪里。这将把它导出为一个环境变量,可用于Postgres命令

以下是用于指定Postgres密码的密码,包括PGPASSWORD

对于像scp这样的*nix命令,还有其他选项。一个是。如果您想将所有这些都作为shell脚本保存,那么这将非常有效

另一种选择,我可能会使用这种方法,就是废弃shell脚本包装器,改为使用类似Python的东西

您可以使用sudo运行命令,也可以在远程计算机上运行命令,还可以运行shell命令,如Postgres实用程序(您可能希望为此在Fabric内的环境哈希中设置PGPASSWORD)