美文网首页
Postgresql数据库的小技巧

Postgresql数据库的小技巧

作者: 西北望高楼 | 来源:发表于2017-06-06 18:05 被阅读82次

    断开其他用户与Postgresql数据的连接

    吃水不忘挖井人:http://blog.csdn.net/liuchunming033/article/details/46878473

    SELECT pg_terminate_backend(pg_stat_activity.pid)  
    FROM pg_stat_activity  
    WHERE datname='ymw' AND pid<>pg_backend_pid(); 
    

    上述SQL语句是用来断开当前其他与Postgresql的数据库ymw正连接的用户连接。
    删除表或数据库的时候报错:

    ERROR:  database "ymw" is being accessed by other users
    DETAIL:  There are 8 other sessions using the database.
    

    因为正处于连接状态。

    上面语句说明:

    • pg_terminate_backend:用来终止与数据库的连接的进程id的函数。
    • pg_stat_activity:是一个系统表,用于存储服务进程的属性和状态。
    • pg_backend_pid():是一个系统函数,获取附加到当前会话的服务器进程的ID。

    备份与恢复

    恢复数据库:

    psql -h localhost -U postgres -d 'databasename' <  bak.sql
    

    一、数据库备份
    吃水不忘挖井人:http://blog.csdn.net/niuxinzan/article/details/17243103
    1、备份数据库结构

    su - postgres
    pg_dump -Fc -s -f testdbschema.sql testdb
    

    2、备份数据库数据

    su - postgres
    pg_dump -Fc -a -f testdbdata.sql testdb
    

    3、备份数据库结构和数据

    su - postgres
    pg_dump -Fc -f testdbschemadata.sql testdb
    

    4、备份数据库中指定表结构

     pg_dump -Fc -s -t citycode -f citycode_schema.sql testdb
    

    5、备份数据库中指定表数据

     pg_dump -Fc -a -t citycode -f citycode_data.sql testdb
    

    .6、备份数据库中指定表(结构和数据)

     pg_dump -Fc -t citycode -f citycode_schemadata.sql testdb
    

    二、删除数据库

    su - postgres
    dropdb testdb
    

    三、恢复数据库
    1、创建新数据库testdb

    su - postgres
    createdb testdb;
    

    2、 恢复数据结构(only schema)

    su - postgres
     pg_restore -s -d testdb testdbschema.sql 
    

    3、恢复数据库数据(only data)

    su - postgres
    pg_restore -a -d testdb testdbdata.sql
    

    4、恢复数据库结构和数据(schema and data)

    su - postgres
    pg_restore -d testdb testdbschemadata.sql
    

    5、指定表数据恢复
    1)删除表

    psql testdb
    DROP TABLE citycode;
    

    2)恢复表结构

    pg_restore -s -t citycode -d testdb citycode_schema.sql
    

    3)恢复表数据

    pg_restore -a -t citycode -d testdb citycode_data.sql
    

    4)恢复表(结构和数据)

    pg_restore -t citycode -d testdb citycode_schemadata.sql
    

    以上备份恢复相关操作可用于静态(无数据增长)数据库。

    重要提示:pg_restore 可用来恢复pg_dump命令以 (Fc\Ft)格式备份的数据文件。执行pg_dump备份命令时若无此格式参数声明,pg_restore 恢复时可能出现错误提示“pg_restore: [archiver] input file does not appear to be a valid archive”。
    C:\Users\cennavi-101>D:/software/postgresql/bin/pg_restore.exe -hlocalhost -p5433 -Upostgres -dMap13SprMIFK13 -v "E:\Map13SprMIFK13(Postgresql).backup"
    

    相关文章

      网友评论

          本文标题:Postgresql数据库的小技巧

          本文链接:https://www.haomeiwen.com/subject/hrlnfxtx.html