从ORACLE的数据库中将数据导入到GaussDB A,主要有以下两步
使用sqluldr2将ORACLE库中的数据导出到文本
使用gds将文本数据导入到GaussDB A中
因为涉及到文本,外表需要指定字段的分隔符。一般情况下我们使用双字节的分隔符不会有报错的发生,如下外表DDL,使用的是\x7c\x1c的双字节分隔符。
CREATE FOREIGN TABLE i_pubdata.f_pos_info (like i_pubdata.pos_info)
SERVER gsmpp_server
OPTIONS (location 'gsfs://192.168.1.1:5000/i_pubdata_pos_info.csv'
, format 'CSV'
, delimiter E'\x7c\x1c'
, quote E'\x06'
, null ''
) ;
但在实际测试时仍然有报错,具体错误如下图
查看导出的数据文件具体报错的行的内容,发现某列中存在单字节数据,而且该单字节是分隔符中的一个字节。在多次修改分隔符和quote以后,仍然有报错发生。
后发现使用 compatible_illegal_chars 'on' 这个OPTIONS内容,能够顺利导入数据
CREATE FOREIGN TABLE i_pubdata.f_pos_info (like i_pubdata.pos_info)
SERVER gsmpp_server
OPTIONS (location 'gsfs://192.168.1.1:5000/i_pubdata_pos_info.csv'
, format 'CSV'
, delimiter E'\x7c\x1c'
, quote E'\x06'
, null ''
,compatible_illegal_chars 'on' --增加该选项后就没有报错了
) ;