PostgreSQL在命令行上使用密码备份和还原pg_dump的sql

以下脚本是PostgreSQL用来在命令行上使用密码对pg_dump进行备份以及还原sql

# linux上的最佳实践
nano ~/.pgpass
*:5432:*:username:password
chmod 0600 ~/.pgpass
# windows上的最佳实践
edit %APPDATA%\postgresql\pgpass.conf
*:5432:*:username:password
# linux
PGPASSWORD="password" pg_dump --no-owner -h host -p port -U username database > file.sql
# windows
PGPASSWORD=password&& pg_dump --no-owner -h host -p port -U username database > file.sql
# 可选
pg_dump --no-owner --dbname=postgresql://username:password@host:port/database > file.sql
# 恢复
psql --set ON_ERROR_STOP=on -U postgres -d database -1 -f file.sql
pg_restore --no-privileges --no-owner -U postgres -d database --clean file.sql # only works for special dumps
# 排除指定的table做备份
pg_dump --no-owner -h 127.0.0.1 -p 5432 -U username --exclude-table=foo database > tmp.sql
# 指定包含的table做备份
pg_dump --no-owner -h 127.0.0.1 -p 5432 -U username --table=foo database > tmp.sql
# 备份以及恢复
PGPASSWORD=password && pg_dump --no-owner -h 127.0.0.1 -p 5432 -U username database > tmp.sql
psql -U postgres -d database -c "drop schema public cascade; create schema public;"
psql --set ON_ERROR_STOP=on -U postgres -d database -1 -f tmp.sql
rm tmp.sql
# 如果之后需要删除无意备份的所有者
sed -i.bak '/OWNER TO specialowner/d' input.sql

版权声明:著作权归作者所有。

相关推荐

Linux设置命令行ip代理

Linux设置命令行代理 有些场景下需要为系统设置代理,比如OpenCV3在进行cmake编译时需要在线从amazon下载一些第三方包。现在多数同学采用的代理方案应该都是基于socks5协议,而默认的终端工具支持的代理类型都是http或https,所以这里需要socks协议到http协议的转换,转换之后采用终端的代理变量设置http代理即可。 我的系统环境为ubuntu 16.04,其他系统类似

忘记PostgreSQL的安装密码重置密码

忘记PostgreSQL的安装密码,需要使用无密码的方式登陆,这样需要重启postgresql。1、备份配置文件pg_hba.conf我们需要对pg-hba.conf修改,在改动前最好先备份它。它一般在/etc/postgresql-9.1/pg_hba.conf。cd /etc/postgresql-9.3/ cp pg_hba.conf pg_hba.conf-b

Docker MySQL备份和恢复数据库命令

这两个命令用于对正在运行的Docker MySQL容器做备份和恢复备份Docker MySQLdocker exec CONTAINER /usr/bin/mysqldump -u username --password=xxx DATABASE > backup.sql 从sql文

使用sdkmanager命令行工具安装Android SDK

在使用持续集成工具(如jenkins,travis ci)对android做自动部署时,我们不能像在Android Studio那样使用SDK Manager的GUI界面来安装Android SDK。这种情况下,我们需要使用android命令行工具或者sdkmanager命令行工具来管理Android SDK。这里介绍一下sdkmanager命令行

Linux使用命令行解析JSON数据获取属性值

在Linux有几个办法可以很方便在命令行解析JSON数据jqcurl -s 'http://example.com/api/user' | jq -r '.name' Python使用Python也可以很方便地解析JSON数据Python 2curl -s 'http://example.com/api/us

Linux shell脚本获取命令行的输出

在Linux使用命令替换来获取命令行的输出命令替换格式:$(command) 或者`command` 这里的`为反引号。示例OUTPUT="$(ls -1)" echo "${OUTPUT}" 参考:Bash Reference Manual