总述

  1. copy命令用于在postgreSql表和标准文件系统直接传输数据。
  2. copy命令让PostgreSQL 服务器直接读写文件,因此文件必须位于服务器本地或能被直接访问。
  3. 该命令仅能在表上使用,不能用于视图;

示例

拷贝表至文件

1、使用空格作为字段直接的分隔        

        COPY test_table TO 'save_file_folder/test_data.copy' WITH DELIMITER ' ';

2、二进制文件

        COPY test_table TO 'save_file_folder/test_data.dat' WITH binary;

3、导出csv文件

        COPY test_table TO 'save_file_folder/test_data.csv' WITH DELIMITER ',' CSV HEADER ENCODING 'utf-8';

4、导出查询结果到文件,支持版本10及10以上        

        COPY (SELECT id, name, age FROM test_table) TO 'save_file_folder/test_data.csv' WITH DELIMITER ',' CSV HEADER ENCODING 'utf-8';

拷贝表至控制台

使用竖线(|)作为字段直接的分隔符

COPY test_table TO stdout(delimiter '|')

导入文件至Postgresql表

COPY test_table FROM 'save_file_folder/test_data.csv' WITH DELIMITER ',' CSV HEADER ENCODING 'utf-8';

语法格式

1、copy文件到数据库的表中

        COPY table_name [ ( column_name [, ...] ) ]
            FROM { 'filename' | PROGRAM 'command' | STDIN }
            [ [ WITH ] ( option [, ...] ) ]
            [ WHERE condition ]

2、copy数据库的数据到文件中

        COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
            TO { 'filename' | PROGRAM 'command' | STDOUT }
            [ [ WITH ] ( option [, ...] ) ]

3、option参数列表

    FORMAT format_name

        选择要读取或写入的数据格式:文本、csv(逗号分隔值)或二进制格式。默认为文本。
    FREEZE [ boolean ]

        冻结数据
    DELIMITER 'delimiter_character'

        列的分割字符
    NULL 'null_string'

        指定表示空值的字符串。默认为文本格式的\N(反斜杠-N),CSV格式为未加引号的空字符串。
    HEADER [ boolean ]

        列的名称的标题行
    QUOTE 'quote_character'

        指定在引用数据值时要使用的引用字符。默认值为双引号。这必须是一个单字节的字符。只有使用CSV格式时才允许此选项。
    ESCAPE 'escape_character'

        只有使用CSV格式时才允许此选项。
    FORCE_QUOTE { ( column_name [, ...] ) | * }

        对每个指定列中的所有非NULL值使用。从不引用NULL输出。如果指定了*,则在所有列中都将引用非NULL值。此选项仅在COPY TO中被允许,并且仅在使用CSV格式时被允许。
    FORCE_NOT_NULL ( column_name [, ...] )

        请将指定列的值与空字符串不匹配。在空字符串为空的默认情况下,这意味着空值将被读取为零长度的字符串,而不是空值,即使它们没有被引号。此选项仅在COPY FROM中被允许,并且仅在使用CSV格式时被允许。
    FORCE_NULL ( column_name [, ...] )

        将指定的列的值与空字符串匹配,即使已引用引号,如果找到匹配项,将该值设置为NULL。在空的默认情况下,将将引号的空字符串转换为NULL。此选项仅在COPY FROM中被允许,并且仅在使用CSV格式时被允许。
    ENCODING 'encoding_name'

        编码格式

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐