Как обновить данные в файлах CSV в хранимой процедуре Oracle

#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. Я считаю, что это должно сработать.