#oracle #plsql
#Oracle #plsql
Вопрос:
Создайте хранимую процедуру, которая будет считывать файл .csv с пути к серверу Oracle, используя операцию чтения файла, запрашивать данные в некоторой таблице X и записывать выходные данные в файл .csv.
здесь после прочтения файла .csv сравните данные файла .csv с данными таблицы и вам нужно обновить несколько столбцов в файле .csv.
Комментарии:
1. Используйте utl_file, внешние таблицы… множество вариантов. Выполните поиск в Google / SO, и вы найдете много примеров.
Ответ №1:
Oracle лучше всего работает с данными в базе данных. UPDATE
является одной из наиболее часто используемых команд.
Но изменение файла, который находится в некотором каталоге, кажется, несколько выходит за рамки. Я полагаю, что вам следует использовать другие языки программирования. Однако, если у вас есть только молоток, любая проблема выглядит как гвоздь.
Я могу придумать два варианта.
Один из них — загрузить файл в базу данных. Используйте SQL * Loader для этого, если файл находится на вашем компьютере, или — если у вас есть доступ к серверу базы данных и администратор базы данных предоставил вам права на чтение / запись в каталоге (объект Oracle, который указывает на каталог файловой системы) — используйте его как внешнюю таблицу. После загрузки данных измените их и экспортируйте обратно (т. Е. Создайте новый файл CSV) с помощью spool
.
Другой вариант — использовать UTL_FILE
package. Для этого также требуется доступ к каталогу сервера базы данных. Используя опцию A (ppend), вы можете добавлять строки в исходный файл, но я не думаю, что вы можете редактировать его, поэтому эта опция — в конце — заканчивается, как и предыдущая — созданием нового файла (но на этот раз с использованием UTL_FILE
).
Вывод? Не используйте систему управления базами данных для изменения файлов. Используйте другой инструмент.
Комментарии:
1. Спасибо за ваше предложение. Я выполнил следующие шаги.
2. Пожалуйста, помогите мне .. Все еще моя проблема не решена. Я объясню свою проблему шаг за шагом. 1. прочитайте файл .csv с пути к серверу oracle. 2. .csv-файл содержит 3 столбца. сравните данные файла .csv с данными таблицы. 3. необходимо добавить данные 2 столбцов из таблицы в файл .csv 4. необходимо сгенерировать новый файл .csv и поместить в путь к серверу Oracle
3. 1. возможно ли добавить команды чтения и записи в одну хранимую процедуру. 2. могу ли я указать прямой большой путь или я могу создать новый каталог, чтобы упростить имя пути. 3. если я создам временную таблицу с 5 столбцами для загрузки данных из файла csv, то я чувствую, что могу сравнить с данными таблицы и добавить оставшиеся 2 столбца. данные, это будет работать?
4. 1. Да. 2. Вы работаете с именем каталога Oracle, которое является чем-то коротким . Вас не волнует его «реальный» путь. 3. Я считаю, что это должно сработать.