0

我正在尝试将大量数据行从 CSV 文件加载到 ADW 表中。CSV 文件已经在对象存储中,我正在使用 DBMS_CLOUD.COPY_DATA 将数据从 CSV 文件加载到我的表中。

挑战在于列包含多行时。

这是我存储在 test.csv 文件中的多行列的简短示例:

O_NO, O_DESC, O_DATE
A001,"This is the first 
multi-line record", 28-Jun-2020 13:09:06
A002, "This is the second
multi-line 

record", 28-Jun-2020 14:56:07

如您所见,这里有两行,但两行的描述列 (O_DESC) 都填充了多行,并用双引号 (") 括起来。

我需要在格式参数中放入什么参数?

以下是我用于创建表和 DBMS_CLOUD.COPY_DATA 过程以加载 CSV 内容的步骤,但它失败了:

CREATE TABLE AW_TEST
(
   O_NO VARCHAR2(8),
   O_DESC VARCHAR2(200),
   O_DATE DATE
);

BEGIN
 DBMS_CLOUD.COPY_DATA(
    table_name =>'AW_TEST'
    , credential_name =>'AW_CRED_NAME'
    , file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mynamespace/b/mybucket/o/test.csv'
    , format => json_object('type' value 'CSV', 'delimiter' value ',', 'skipheaders' value '1', 'dateformat' value 'DD-Mon-YYYY HH24:MI:SS', 'blankasnull' value 'true', 'recorddelimiter' value '''\r\n''')
 );
END;
/

如何加载这些多行列?

4

1 回答 1

0

您可以在参数列表中使用 'type' 值 'csv with embedded',如下所示:

begin
    DBMS_CLOUD.COPY_DATA (
        table_name => 'AW_TEST',
        credential_name => 'AW_CRED_NAME',
        file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mynamespace/b/mybucket/o/test.csv',
        format => json_object('type' value 'csv with embedded', 'delimiter' value ',', 'skipheaders' value 1, 'dateformat' value 'DD-Mon-YYYY HH24:MI:SS', 'blankasnull' value 'true')
    );
end;
/
于 2021-10-08T17:58:48.150 回答