Excel UTL_FILE.GET_LINE кодированный результат - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь собрать пакет с процедурой, которая принимает файл .XLSX, анализирует и вставляет в таблицу в базе данных.

То, чего я достиг на данный момент, это код ниже:

create or replace package body pkg_name
is
    procedure fetch_and_insert_data
    is
        l_display   varchar2(32767);
        l_id        varchar2(32767);
        l_filename  varchar2(100)    := 'my_file.xlsx';

        v_file      UTL_FILE.FILE_TYPE; 
    begin        
      execute immediate 'create or replace directory XOBJ as ''' || c_file_dir || '''';
      v_file := UTL_FILE.FOPEN(location     => 'XOBJ', 
                               filename     => l_filename, 
                               open_mode    => 'r', 
                               max_linesize => 32767);

      loop
         begin
            UTL_FILE.GET_LINE(v_file,l_id);
            dbms_output.put_line(l_id);
            EXCEPTION
              WHEN NO_DATA_FOUND THEN
            EXIT;
         end;
      end loop;

      UTL_FILE.FCLOSE(v_file); 

      EXCEPTION 
      WHEN OTHERS THEN 
        UTL_FILE.FCLOSE(v_file); 
      RAISE; 

    end fetch_and_insert_data;
end;

Но когда я запускаю его, он кодируется.

PK! Bîha [Content_Types] .xml ¢ ( ¬»MOÃ0 † IHU ‡ WÔfã € Z · G~Äø¡q × hiÅÞØþ = nö!«Ê| ‰] μ ± ß ÷ ‰ kg4Y · 6 [Ada]) † Å @ DÀ ¯> - âcö'ß

Как я могу декодировать и поддерживать мою строку, как она есть в файле XLSX? Пробовал с файлом CSV и работает отлично, но мне нужно использовать файлы XLSX.

Также пробовал другие внешние пакеты, найденные в сети и не помогшие.

...