Загружать выбранные поля из CSV в хранилище объектов в ADW с помощью внешних таблиц
Можно ли загружать в 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.
Любые указатели, как это могло работать?
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;
.. для обработки интересующих вас столбцов.