Обновите таблицу Oracle значениями из файла CSV

У меня есть файл CSV, который содержит идентификатор и несколько других столбцов. У меня также есть таблица в оракуле, где идентификатор определяет строку. Как я могу лучше всего заменить значения, которые находятся в таблице со значениями в файле CSV при хранении других столбцов путем, они были прежде?

Это должно быть сделано с инструментами, доступными в оракуле само (т.е. Мн / SQL или сценарии SQL), я не могу использовать "реальный" язык сценариев (Python...) или "реальная" программа.

Спасибо, Thomas

7
задан Thomas Lötzer 23 December 2009 в 13:08
поделиться

4 ответа

Посмотрите на ВНЕШНИЕ СТОЛЫ в доке Oracle. Вы можете скопировать csv-файл на серверный ящик Oracle и заставить Oracle представить его как "обычную" таблицу, на которой можно выполнять запросы.

Тогда проблема становится просто проблемой копирования данных из одной таблицы в другую.

Внешние таблицы действительно очень полезны для обработки таких нагрузок данных.

10
ответ дан 7 December 2019 в 01:22
поделиться

Другой вариант - прочитать файл построчно, проанализировать поля в строке, используя что-то вроде REGEXP_REPLACE, и обновить соответствующие строки. Вы можете проанализировать строку с разделителями-запятыми, как показано ниже:

SELECT TRIM(REGEXP_REPLACE(strLine, '(.*),.*,.*', '\1')),
       TRIM(REGEXP_REPLACE(strLine, '.*,(.*),.*', '\1')),
       TRIM(REGEXP_REPLACE(strLine, '.*,.*,(.*)', '\1'))
  INTO strID, strField1, strField2      FROM DUAL;

Это полезно, если ваш сайт не позволяет использовать внешние таблицы.

Делитесь и наслаждайтесь.

1
ответ дан 7 December 2019 в 01:22
поделиться

Использовать загрузчик SQL *

sqlldr username@server/password control=load_csv.ctl

Файл load_csv.ctl

load data
 infile '/path/to/mydata.csv'
 into table mydatatable
 fields terminated by "," optionally enclosed by '"'          
 ( empno, empname, sal, deptno )

, где /path/to/mydata.csv - это путь к необходимому CSV-файлу загрузить, в Windows что-нибудь например C: \ data \ mydata.csv . Имя таблицы mydatatable . Столбцы перечислены в том порядке, в котором они появляются в CSV-файле в последней строке.

Если у вас нет очень большого объема данных, это самый простой в использовании способ получения данных дюйм. Если данные необходимо загружать на регулярной основе, это можно преобразовать в сценарий оболочки и запустить CRON в системе U * NX.

1
ответ дан 7 December 2019 в 01:22
поделиться

Стандартным инструментом Oracle для загрузки в базу данных CSV-типа файлов данных является SQLLoader. Обычно он используется для вставки записей, но вместо него можно настроить управляющий файл на запуск обновления, если вы этого хотите.

Это не самый простой инструмент в мире (читайте "это заноза в заднице"), но он является частью стандартного набора инструментов, и он выполняет эту работу.

.
5
ответ дан 7 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: