美文网首页
PG备份与回复

PG备份与回复

作者: such_ | 来源:发表于2022-05-16 12:49 被阅读0次

    pg_dump 备份压缩与分割

    压缩与分割的原理都是利用 Linux 的管线(PIPE)命令。

    1)压缩备份

    pg_dump testdb| gzip > filename.gz

    2)恢复

    gunzip -c filename.gz | psql dbname

    3)分割备份

    pg_dump dbname | split -b 1m

    4)恢复

    cat filename* | psql dbname

    copy 导入导出

    语法COPY命令概述

    copy 命令用于表与文件(和标准输出,标准输入)之间的相互拷贝;
    copy to 由表至文件,copy from 由文件至表;
    copy 命令始终是到数据库服务端找文件,以超级用户执行导入导出权限要求很高,适合数据库管理员操作;
    \copy 命令可在客户端执行导入客户端的数据文件,权限要求没那么高,适合开发人员,测试人员使用。

    COPY 基本语法参考:

    COPY -- copy data between a file and a table Synopsis
    COPY table_name [ ( column ...] ) ] FROM { 'filename' | command' | STDIN } [ [ WITH ] ( option [, ] ) ]
    COPY { table_name column_name [, ...] ) ] | ( query ) } TO { 'filename' | PROGRAM 'command' | STDOUT }
    [ [ WITH ] ( option [, ...] ) ]
    where option can be one of:
    FORMAT format_name OIDS [ boolean ]
    FREEZE [ boolean ]
    DELIMITER 'delimiter_character' NULL 'null_string'
    HEADER [ boolean ] QUOTE 'quote_character' ESCAPE 'escape_character'
    FORCE_QUOTE { ( column_name [, ...] ) | * } FORCE_NOT_NULL ( column_name [, ...] ) ENCODING 'encoding_name'
    

    COPY 命令示例:

    表与文件(和标准输出,标准输入)之间的相互拷贝,类似于 Oracle 的 sqlldr,把文本文件的内容导入到数据库,同时也可以把表的数据导出生成文本文件,实现数据库表和文本文件之间数据的迁移,非常方便,比 sqlldr 易用性好。

    [postgres@db2 ttdata]$ cat  test_copy.txt
    1   a
    2   b
    3   c
    

    注意:上面列之间要用 tab 键隔开。

    [postgres@db2 ttdata]$ psql psql 
    Type "help" for help.
    testdb=# create table test_copy(id int4,name varchar(32));
    
    testdb=# \copy test_copy from /home/postgres/test_copy.txt ; #把文本数据导入到表中
    
    testdb=#\copy test_copy to /home/postgres/test_copy1.txt ; #以 tab 制表符隔离
    
    testdb=#\copy test_copy to /home/postgres/test_copy1.txt.csv with csv; #以逗号隔离
    
    testdb=#\copy test_copy from /home/postgres/test_copy1.txt.csv with csv;
    
    testdb=# copy test_copy from '/home/postgres/test_copy1.txt.csv' with csv;
    
    

    总结:copy 与\copy 命令都能实现数据文件与表的数据传递,两者都在 psql 环境下执行。
    主要不同在于数据文件的路径寻址:
    1) copy 命令始终是到数据库服务端找文件;
    2) \copy 命令可在客户端执行导入客户的数据文件。

    另外,常用的数据文件列之间默认是 tab 制表符,可以用 csv 格式,列之间以逗号隔离。

    相关文章

      网友评论

          本文标题:PG备份与回复

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