2009-03-26 2 views
1

Возможно ли читать/записывать данные из/в файл в блоке PL/SQL без использования пакета UTL_FILE в Oracle 10g?Чтение/запись данных из/в файл в PL/SQL без использования UTL_FILE

В настоящее время у меня есть файл, содержащий набор первичных ключей (около 28000), которые мне нужны для запроса таблицы для дополнительных данных, которые должны быть записаны в файл. Используемая мной схема очень ограничена и не имеет никаких созданных привилегий. Кроме того, нет каталогов, настроенных с необходимыми правами чтения/записи для правильной работы процедур в UTL_FILE. Просить DBA предоставить дополнительные привилегии займет слишком много времени.

Есть ли способ обойти эту проблему?

Заранее спасибо.

[Изменить] Я не могу загрузить данные в таблицу. У вас нет таблицы для загрузки или привилегий для ее создания. Я думаю, что это самая сложная часть проблемы. Как запросить базу данных, если критерии запроса не могут быть удобно самим запросом (т. Е. В отдельном файле)? Если число первичных ключей невелико, я могу сгенерировать несколько операторов select для извлечения данных в sqlplus (используя spool), но 28000 кажется слишком большим.

+1

Well Как вы должны это делать, если вам не разрешено что-либо делать? Говорю, вы должны пахать больной. – Martlark

+0

Подружитесь с DBA (-ами), что очень важно для разработчика. – tuinstoel

ответ

2

Если вы не можете настроить каталоги, я бы сказал, что вам не повезло. Вы запрашиваете чтение и создание файлов на сервере базы данных. Это то, о чем должен знать ваш администратор базы данных.

Вы уверены, что вам нужны файлы на сервере? Можете ли вы загрузить файл с клиента в таблицу (используя обычные клиентские инструменты) и прочитать/записать данные?

Update:

Я не могу загрузить данные в таблицу. У вас нет таблицы для загрузки или привилегий для ее создания. Если число первичных ключей невелико, я могу сгенерировать несколько операторов select для извлечения данных в sqlplus (используя spool), но 28000 кажется слишком большим.

28000 не так много. Петля на стороне клиента.

+0

Я попал в ловушку преждевременной оптимизации. Спасибо за головы. – maxyfc

0
  1. Возможно, вы сможете использовать пакет UTL_TPC для записи на FTP-сервер с использованием TCP-пакетов.
  2. Было бы лучше загрузить первичные ключи в таблицу перед запуском пакета, чтобы pl/sql мог читать/записывать в таблицу первичных ключей.
  3. Напишите гигантскую программу pl/sql с ключами 20000 в качестве операторов вставки для построения таблицы памяти и используйте ее для запроса/и т. Д. Затем используйте sqlplus для генерации результатов. или почтовый пакет для отправки по электронной почте результатов самому себе.
+0

UTL_TPC выглядит интересным. Может пригодиться в будущем. Благодарю. – maxyfc

Смежные вопросы