Как я могу загрузить CSV-файл со столбцами, охватывающими несколько строк, используя DBMS_CLOUD для ADW?

Я пытаюсь загрузить огромное количество строк данных из файла 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;
/

Как мне загрузить эти многострочные столбцы?

1 ответ

Вы можете использовать 'type' value '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;
/
Другие вопросы по тегам