GaussDB(DWS)COPY命令实现不同编码库之间数据容错写入

举报
小小一叶 发表于 2021/06/24 16:04:55 2021/06/24
【摘要】         COPY命令可以实现表和文件之间拷贝数据。COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据拷贝到一个文件。有时我们需要完成从数据库A(UTF8编码)至数据库B(GBK编码)的数据导入,导入数据时会出现字符集编码不匹配的错误,导致数据无法导入,这时我们可以通过COPY来完成。

一、 概述

      COPY命令可以实现表和文件之间拷贝数据。COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据拷贝到一个文件。有时我们需要完成从数据库A(UTF8编码)至数据库B(GBK编码)的数据导入,导入数据时会出现字符集编码不匹配的错误,导致数据无法导入,这时我们可以通过COPY来完成。

二、 COPY语法及容错参数介绍

      1.语法格式

      从一个文件拷贝数据到一个表

COPY table_name [ ( column_name [, ...] ) ] 
    FROM { 'filename' | STDIN }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ LOG ERRORS ]
    [ LOG ERRORS data ]
    [ REJECT LIMIT 'limit' ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];

      把一个表的数据拷贝到一个文件

COPY table_name [ ( column_name [, ...] ) ]
    TO { 'filename' | STDOUT }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) [ ( option [, ...] ) | copy_option [  ...] ] ];

      2.容错参数介绍

      COMPATIBLE_ILLEGAL_CHARS

      指定导入时对非法字符进行容错处理,非法字符转换后入库。不报错,不中断导入。此参数不支持BINARY格式,会报“cannot specify bulkload compatibility options in BINARY mode”错误信息。此参数仅对COPY FROM导入有效。

      若不使用该参数,导入时遇到非法字符进行报错,导致数据无法写入。

三、 具体操作

      1.使用gsql 连接数据库AUTF8

gsql –p 25308 –d test_utf8

      2.执行copy命令

copy public.table totable.dat’ with (ENCODING ‘Unicode’);

      从utf8 库中将数据以 Unicode编码格式导出成文件 table.dat

      3.连接数据库BGBK)在B库中执行copy … from命令

copy public.table fromtable.dat’ with (ENCODING ‘Unicode’ ,COMPATIBLE_ILLEGAL_CHARS ‘true’);

      将COMPATIBLE_ILLEGAL_CHARS 参数设置为true。

      4.通过以上操作就可完成将数据从数据库A(UTF8)至数据库B(GBK)的导入。

20210624-155123(WeLinkPC).png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。