数据导入导出
介绍导入导出的相关参数。
raise_errors_if_no_files
参数说明:设置导入时是否区分“导入文件记录数为空”和“导入文件不存在”。该参数开启时,“导入文件不存在”的时候,GaussDB将抛出“文件不存在”的错误。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示导入时区分“导入文件记录数为空”和“导入文件不存在”。
- off:表示导入时不区分“导入文件记录数为空”和“导入文件不存在”。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
raise_errors_if_no_files参数只在GDS工具使用场景有意义,在当前形态不生效。
safe_data_path
参数说明:设置初始用户以外的路径前缀限制,目前包括copy和高级包路径限制。
参数类型:字符串
参数单位:无
取值范围:合法目录路径,需要小于4096个字符。
默认值:""
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:尽量控制safe_data_path路径覆盖有限范围,不要设置过大的路径范围。
设置不当的风险与影响:当enable_copy_server_files打开,并且safe_data_path路径范围设置过大时,可能导致恶意用户访问到服务器上的敏感文件。
- 如果safe_data_path目录下存在软链接文件,则会按软链接实际指向的文件路径进行处理,实际路径如果不在safe_data_path下会报错处理。
- 如果safe_data_path目录下存在硬链接文件,则可以正常使用。为安全起见,请谨慎使用硬链接文件,切勿在safe_data_path目录下创建指向目录以外的硬链接文件,并确保safe_data_path目录权限最小化。
enable_copy_server_files
参数说明:是否开启copy服务器端文件的权限。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启copy服务端文件的权限,允许具有SYSADMIN权限的用户或继承了内置角色gs_role_copy_files权限的用户执行COPY FROM FILENAME或COPY TO FILENAME命令。该参数设置为on时,多租场景下,当前依旧不支持非初始用户在PDB内部执行COPY FROM FILENAME或COPY TO FILENAME命令。
- off:表示不开启copy服务端文件的权限,只允许初始用户执行COPY FROM FILENAME或COPY TO FILENAME命令。
默认值:off
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:仅在需要copy服务端文件时打开,打开后建议同步设置safe_data_path。
设置不当的风险与影响:打开该参数后,如果safe_data_path设置路径范围过大,可能导致恶意用户访问到服务器上的敏感文件。
a_format_load_with_constraints_violation
参数说明:gs_loader导入数据支持约束冲突时,是否开启不回滚功能。该参数可在PDB级别设置。
参数类型:字符串
参数单位:无
取值范围:
- "s1":表示gs_loader支持约束冲突时,开启不回滚功能。
- "":表示gs_loader支持约束冲突时,不开启不回滚功能。
默认值:""。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
support_binary_copy_version
参数说明:使用COPY TO的BINARY模式导出数据时,是否包含当前数据库服务端的编码信息。
参数类型:字符串
参数单位:无
取值范围:""、"header_encoding"。
兼容性配置项 |
兼容性行为控制 |
---|---|
header_encoding |
使用COPY TO的BINARY模式导出数据时,二进制文件头中包含当前数据库服务端的编码信息。 |
空字符串 |
做前向兼容处理时配置,以原二进制格式进行导出。 |
默认值:"header_encoding"
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:无特殊情况时建议配置为默认取值,仅做前向兼容时需另行配置为空。
设置不当的风险与影响:设置为空字符串时,导出结果中不包含服务端编码信息,在需要编码信息的场景下,需要用户自行查询并记录。
copy_special_character_version
参数说明:控制使用COPY导入导出数据时对非法编码的字符处理的相关表现。
参数类型:字符串
参数单位:无
取值范围:""、"no_error"、"per_byte"。
兼容性配置项 |
兼容性行为控制 |
---|---|
no_error |
使用COPY导入数据文件时,当文件编码与服务端编码相同时,对数据文件中不满足编码信息的数据进行容错处理,不报错,并直接按照原编码插入表中。 |
per_byte |
使用COPY导出文本格式的数据文件时,对文件编码为GBK或ZHS16GBK文件的处理方式。 设置per_byte后,在导出数据时一次导出一个字节数据,否则一次导出两个字节数据(GBK编码下,一个字符占两个字节)。 |
空字符串 |
参数默认配置,不影响任何功能使用,做前向兼容处理。即COPY存在非法编码时报错。 |
默认值:""
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。使用gsql连接数据库,使用set方式设置时不区分大小写,使用gs_guc设置时仅能设置小写。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
- 为保证导入表中数据的合法性,COPY中需要对数据编码的合法性进行校验。当开启此参数后,会屏蔽非法校验操作并导致字段内出现非法字符,请酌情考虑开启此参数。
- 当前屏蔽数据编码校验仅在服务端编码与数据编码保持一致时生效,即copy_special_character_version='no_error'时,数据库服务端编码须与数据文件编码保持一致,否则会报错;未指定数据编码时,数据编码默认为客户端编码。
- 二进制模式下,copy_special_character_version='no_error'时,仅对TEXT、CHAR、VARCHAR、NVARCHAR2、CLOB类型的字段生效。
- 此参数仅在UTF-8、GB18030、GB18030_2022、ZHS16GBK、LATIN1字符集数据库下使用生效。
- 客户端编码与服务端编码都为GBK或ZHS16GBK时,当数据库内存在非法编码的数据时,如果不设置copy_special_character_version为per_byte,导出的数据文件中可能会存在预期外的数据。
- 设置copy_special_character_version值为'no_error'的优先级高于COPY内COMPATIBLE_ILLEGAL_CHARS参数。
enable_log_copy_illegal_chars
参数说明:使用gs_loader导入数据及COPY导入导出数据时,遇到非法编码的字符时,是否向数据库运行日志中写入记录。多租场景下,该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:on、off。
兼容性配置项 |
兼容性行为控制 |
---|---|
on |
每出现一行包括非法编码字符的数据,都会向数据库运行日志中写入一条记录。 |
off |
不向数据库运行日志中写入非法编码字符相关记录。 |
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:无特殊情况时建议配置为默认值,仅对数据库性能及磁盘带宽有要求时设置为off。
设置不当的风险与影响:设置为off时将不会在运行日志中写入非法编码字符相关记录,影响可定位能力。