Можно ли прочитать содержимое плоского файла в таблицу pl / sql (не обычную таблицу)? - PullRequest
0 голосов
/ 20 февраля 2019

Я использую Oracle 12.2 и хочу прочитать txt / xls / etc-File (Flat File).Можно ли прочитать содержимое файла в таблицу pl / sql (не обычную таблицу)?Задача состоит в том, чтобы не изменять базу данных, особенно не создавать какой-либо объект базы данных.При этом мне приходится работать с содержимым плоского файла в pl / sql.Вот почему я хочу прочитать плоский файл и просто сохранить его «как таблицу в памяти».Я работаю с sql * plus и sql developer.

Что я хочу сделать, так это перенос данных: чтение данных из заданной базы данных и запись их в csv-файлы для импорта этих файлов в новыйпрограммного обеспечения.При этом некоторые данные должны быть «переведены» (картирование): я считываю значение из старого программного обеспечения и переводю его в значение, которое новое программное обеспечение способно прочитать.Эти Mapping-Files являются плоскими файлами, о которых я говорю.Мой (еще не существующий) код plsql или sql должен прочитать старое значение, открыть плоский файл и извлечь запись со старым и новым значением, а затем работать с новым значением и сохранить его вместе с другими данными в файле.

1 Ответ

0 голосов
/ 20 февраля 2019

Нечто подобное может помочь, но требует ручной обработки.

declare
  f UTL_FILE.FILE_TYPE;
  ldir varchar2(100) := 'DATA_PUMP_DIR';
  lfile varchar2(100) := 'writefile.sql';
  vtable m_code_tabletype := m_code_tabletype();
BEGIN
f := UTL_FILE.FOPEN(ldir,lfile,'R');
  IF UTL_FILE.IS_OPEN(f) THEN
    LOOP
      BEGIN
        UTL_FILE.GET_LINE(f,lfile);
        IF lfile IS NULL THEN
          EXIT;
        END IF;
         --do parsing
         -- col1, col2, ...
         vtable.extend;
         vtable(vtable.count) := m_code_object(col1, col2, ...);
      END;
    END LOOP;

  COMMIT;
  END IF;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...