备份命令:
1、清空原数据库:
连接数据库: psql -h [主机] -U [用户] -d [数据库]
删除表中数据: truncate [表名];
2、备份数据库:
pg_dump -h [主机] -U [用户] -d [数据库] -t [表名] -f [d:/data.dmp本地路径] -a(--data-only 只转储数据,不包括模式)/s( --schema-only 只转储模式, 不包括数据)
例子:从远程服务器中,转储3张数据表
C:\Users\admin>pg_dump -h www.yunlauncher.com -p 5432 -U postgres -d desktop
-t game_active_req -t game_pay_req -t game_user_info -f d:/data.dmp -a
用法:
pg_dump [选项]... [数据库名字]
一般选项:
-f, --file=FILENAME 输出文件或目录名
-Z, --compress=0-9 被压缩格式的压缩级别
-?, --help 显示此帮助, 然后退出
控制输出内容选项:
-a, --data-only 只转储数据,不包括模式
-C, --create 在转储中包括命令,以便创建数据库
-E, --encoding=ENCODING 转储以ENCODING形式编码的数据
-s, --schema-only 只转储模式, 不包括数据
-t, --table=TABLE 只转储指定名称的表
-T, --exclude-table=TABLE 不转储指定名称的表
-x, --no-privileges 不要转储权限 (grant/revoke)
联接选项:
-d, --dbname=DBNAME 对数据库 DBNAME备份
-h, --host=主机名 数据库服务器的主机名或套接字目录
-p, --port=端口号 数据库服务器的端口号
-U, --username=名字 以指定的数据库用户联接
3、还原数据:
psql -h [主机] -U [用户] -d [数据库] -f [本地路径]
例子:将之前的备份,恢复到本地数据库
C:\Users\admin>psql -h localhost -U postgres -d Mydb -f d:/data.dmp
用法:
psql [选项]... [数据库名称 [用户名称]]
通用选项:
-c,--command=命令 执行单一命令(SQL或内部指令)然后结束
-d, --dbname=数据库名称 指定要连接的数据库 (缺省:"admin")
-f, --file=文件名 从文件中执行命令然后退出
-l, --list 列出所有可用的数据库,然后退出
-V, --version 输出版本信息, 然后退出
-?, --help 显示此帮助, 然后退出
输入和输出选项:
-a, --echo-all 显示所有来自于脚本的输入
-e, --echo-queries 显示发送给服务器的命令
-E, --echo-hidden 显示内部命令产生的查询
-L, --log-file=文件名 将会话日志写入文件
-n, --no-readline 禁用增强命令行编辑功能(readline)
-o, --output=FILENAME 将查询结果写入文件(或 |管道)
-q, --quiet 以沉默模式运行(不显示消息,只有查询结果)
-s, --single-step 单步模式 (确认每个查询)
-S, --single-line 单行模式 (一行就是一条 SQL 命令)
输出格式选项 :
-A, --no-align 使用非对齐表格输出模式
-H, --html HTML 表格输出模式
-T, --table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界)
-x, --expanded 打开扩展表格输出
联接选项:
-h, --host=主机名 数据库服务器主机或socket目录(缺省:"localhost")
-p, --port=端口 数据库服务器的端口(缺省:"5432")
-U, --username=用户名 指定数据库用户名(缺省:"admin")
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
注意:在使用pg_dump对数据库进行备份的时候,到出成默认的格式,导致插入数据时,提示无效的命令\N
解决方法:使用custom格式导出,然后用pg_restore导入。
导出
pg_dump -F custom -U username -d dbname -h host -p port -f filepath
导入
pg_restore -d dbname -U username -h host -p port --jobs=4 --verbose filepath