GaussDB(DWS)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 连接数据库A(UTF8)
gsql –p 25308 –d test_utf8
2.执行copy命令
copy public.table to ‘table.dat’ with (ENCODING ‘Unicode’);
从utf8 库中将数据以 Unicode编码格式导出成文件 table.dat。
3.连接数据库B(GBK)在B库中执行copy … from命令
copy public.table from ‘table.dat’ with (ENCODING ‘Unicode’ ,COMPATIBLE_ILLEGAL_CHARS ‘true’);
将COMPATIBLE_ILLEGAL_CHARS 参数设置为true。
4.通过以上操作就可完成将数据从数据库A(UTF8)至数据库B(GBK)的导入。
- 点赞
- 收藏
- 关注作者
评论(0)