0

我们可以使用外部表仅将平面文件中的选择性列加载到 ADW 中吗?客户有一个生成的巨大平面文件,他们想要一种方法来查看是否有一种方法可以只将文件中所需的列带入 ADW

这是我到目前为止所尝试的:对象存储中的 CSV 文件有三列,我试图在这里只拉出其中的两列:

            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'
            ,  
      column_list =
            > 'time number,
                      dutymax number'
            )
            ;
   END
            ;
/ 

我不断收到此错误:

ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-03025: For CSV format files, field Time is not delimited.  

任何指针,这如何工作?

4

1 回答 1

1

创建定义 CSV 文件中所有列的外部表,然后只选择您感兴趣的那些。使用外部表定义,您不能假装文件实际上不在文件中。

因此,假设您有一个不想处理的附加尾随列 FOOBAR NUMBER,您的代码和处理将如下所示:

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'
            ,  
      column_list =
            > 'time number,
                      dutymax number, FOOBAR NUMBER'
            )
            ;
   END
            ;
/ 

..然后你只需做一个

SELECT time, dutyMax FROM gentherm_canalyser5;

.. 处理您感兴趣的列。

于 2021-09-27T15:09:56.340 回答