Как разобрать CSV в Oracle SQL? - PullRequest
0 голосов
/ 16 октября 2018

Я использую .csv-файлы и хочу разобрать их, чтобы я мог вставить строки / содержимое моего csv-файла в разные таблицы.Я искал в Интернете и нашел этот твит .Затем я попытался адаптировать код к моей проблеме, и вот как он выглядит в настоящее время:

select /*csv*/ * from uploaded_files where filename LIKE 'I%_Trigger.csv';
with 
    function get_column (p_row varchar2, p_col_num number)
    return varchar2
    is 
    v_row apex_t_varchar2;
    begin
    v_row := apex_string.split(p_row, ';');
    if v_row.exists(p_col_num) then
        return v_row(p_col_num);
    end if;
    return null;
    end;

select get_column(column_value, 1) as col1,
        get_column(column_value, 2) as col2,
        get_column(column_value, 3) as col3,
        get_column(column_value, 4) as col4,
        get_column(column_value, 5) as col5,
        get_column(column_value, 6) as col6,
        get_column(column_value, 7) as col7,
        get_column(column_value, 8) as col8
    from apex_string.split(:CSVDATA, chr(10));

Чтобы кратко объяснить мой код: uploaded_files хранит .csv-файлы.Таблица содержит столбец с именем file_blob, в котором хранится содержимое файла.Я должен преобразовать его в clob (эта часть здесь отсутствует), чтобы иметь возможность анализировать данные.

Когда я запускаю код, я получаю следующую ошибку:

ORA-00933: SQL-Befehl wurde nicht коррекция был

00000 - «Команда SQL не завершена должным образом»

Я думаю, что ошибка должна что-то делать с последней строкой.Кто-нибудь может объяснить, что означает :CSVDATA в твите?Хорошо, я знаю, что он содержит данные моего CSV, но что именно это и как он объявлен / определен?Что означает : в этом контексте?

...