Я пытаюсь написать sql-скрипт в toad для версии oracle 9.5, который при запуске позволит пользователю выбирать данные из txt-файла с диска c, где вводятся параметры/переменные. Версия оракула 10gсценарий, который извлекает данные из txt-файла в предложении where
ответ
Звучит как Oracle external directory идеально подходит для работы. Имейте в виду, что этот подход чреват трудностями, если это текстовый файл, на который пользователи могут писать. Пользователи сделают сотню вещей, которые вы никогда не считали возможными, что приведет к ошибкам и more.
Из статьи:
Создайте каталог
грант на чтение, запись на каталог data_dir в ваш_пользователь;
Создать внешнюю таблицу
CREATE TABLE test_ext (
test_code VARCHAR2(5),
test_name VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY ext_tab_data
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(
test_code CHAR(5),
test_name CHAR(50)
)
)
LOCATION ('test1.txt','test2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;
, а затем считываются из таблицы
SELECT *
FROM test_ext
ORDER BY test_name;
Edit: вы можете сделать это с помощью каталогов, которые не находятся на сервере базы данных, но требуется больше работы и это представляет собой еще больший риск для безопасности базы данных и качества данных. Этот подход не масштабируется. Вы собираетесь добавлять новый каталог каждый раз при добавлении нового пользователя?
шагов, чтобы позволить Oracle для доступа к файлам, расположенным на другую машину (предполагается, что операционная система Windows)
- создать окно или пользователь домена, которые будут иметь прав на чтение файлов на каждом каталоге, который вы хотите получить доступ к
- на сервере базы данных запустите services.msc и измените пользователя, что служба базы данных Oracle работает с вашим новым пользователем домена. Добавить пользователя в локальную группу под названием ORA_DBA на сервере базы данных
- перезапустить базу данных для того, чтобы изменения вступили в силу
- создать каталог в базе данных, используя этот путь // clientPc/общая_папка разрешений
- пособие для чтения в база данных пользователя
- о предоставлении клиентской машины чтения для пользователя домена на этой папке
- проверить подключение by using UTLFILE прочитать образец файл на клиентском компьютере
- 1. ВЫБЕРИТЕ данные, когда id в предложении WHERE из предыдущей строки
- 2. Условие в предложении WHERE
- 3. SQL Select в предложении WHERE
- 4. Попытка сделать сценарий bash, который извлекает html-код из файлов
- 5. ЕСЛИ СУЩЕСТВУЕТ в предложении WHERE?
- 6. Условная инструкция в предложении WHERE
- 7. Сценарий, который вытаскивает имена всех хранимых процедур, которые имеют функции в предложении where?
- 8. Использование псевдонима в предложении WHERE
- 9. SQL-заполнители в предложении WHERE
- 10. Присоединить подзапрос в предложении FROM aliased в предложении WHERE
- 11. Вычитание даты в предложении WHERE
- 12. Ошибка запроса в предложении WHERE
- 13. Операторы if в предложении WHERE
- 14. MySQL СУММ() в предложении WHERE
- 15. Макс (datetime_column) в предложении where
- 16. Использование массива в предложении Where
- 17. Странный синтаксис в предложении Where
- 18. Подзапрос BQL в предложении where
- 19. Заявление CASE в предложении WHERE
- 20. Должно ли таблица в предложении FROM находиться в предложении WHERE?
- 21. Как использовать MySql MAX() в предложении WHERE
- 22. Возможно ли захватить данные из предложения WHERE?
- 23. PHP взрывает данные, которые будут использоваться в предложении WHERE
- 24. Обновить синтаксическую ошибку в предложении WHERE
- 25. TSQL для извлечения данных столбца в предложении where
- 26. Как отключить/уничтожить сеанс, который извлекает данные из mysql
- 27. Как получить данные, которые использовали массив в предложении WHERE?
- 28. Как получить конкретные данные в предложении SQL WHERE
- 29. Класс тестирования, который извлекает непредсказуемые данные
- 30. Использование выражения case в предложении where
Это работает бесшовным, когда пользователь имеет привилегию sys и текстовый файл находится на том же компьютере, что и сервер. Однако, как это будет работать, если текстовый файл находится на внешнем или на одном сервере, а пользователь вводит данные из обычного компьютера с входом в систему без sys-привилегий. следующая ошибка встречается: ORA-29913: ошибка при выполнении ODCIEXTTABLEOPEN выноски ORA-29400: Данные об ошибке картриджа КУП-04063: невозможно, чтобы открыть файл журнала ошибку ADMINS_26597.log OS Нет такого файла или каталога ORA-06512 : в строке «SYS.ORACLE_LOADER», строка 19 – ora
Вам нужно добавить эти критерии к вашему вопросу. – kevinsky
Я понимаю. Но вы можете помочь с этим. База данных oracle 10g устанавливается на машине linux 5.5, а скрипты sql запускаются с Toad на машине xp для создания таблицы.существуют ли какие-либо вещи, которые DBA должен делать при создании и предоставлении доступа и совместного использования каталога/папки – ora