Как я могу загрузить 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;
/