使用外部表从对象存储CSV加载指定列到ADW的报错解决咨询
ADW外部表仅加载平面文件指定列的解决方案
可以实现仅加载指定列,你遇到的KUP-03025报错是因为未明确标记CSV文件中不需要的列,导致字段匹配错位。
报错原因
DBMS_CLOUD创建CSV格式外部表时,field_list会严格按照CSV文件的列顺序依次匹配,你当前的源文件共有3列,但field_list中仅定义了2个字段,数据库会将第三列的内容也判定为第二个字段的一部分,因此抛出字段无分隔符的错误。
修复方案
在field_list的对应位置添加IGNORE关键字标记不需要加载的列即可,不需要加载的列不会占用额外计算资源,完全适配大文件按需加载的需求。
你的场景下源文件第三列不需要加载,修正后的代码如下:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name => 'gentherm_canalyser5', credential_name => 'DBCREDENTIAL_123', file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/natdsepltfrmanalyticshrd1/b/TEST/o/123test_can.csv', format => json_object( 'type' value 'csv', 'skipheaders' value '1' ), field_list => '"Time" decimal, "dutyMax" decimal, unused_col IGNORE', column_list => 'time number, dutymax number' ); END; /
补充说明
如果需要跳过的列位于文件中间位置,只需要在field_list的对应顺序位添加[自定义列名] IGNORE即可,不需要调整目标表的column_list定义。
内容的提问来源于stack exchange,提问作者Hermann Baer
相关产品推荐
相关产品推荐

