Оператор SQL, который обновляет таблицу базы данных Oracle из электронной таблицы Excel - PullRequest
0 голосов
/ 09 марта 2012

Я хотел бы написать команду SQL Update, которую можно запускать раз в год, чтобы обновить запись для каждой учетной записи в базе данных Oracle на основе внешних значений, полученных в электронной таблице Excel.

Мое исследование до сих пор показывает, что я могу использовать команду OPENROWSET, но большинство ссылок показывают, что это используется из Excel в MS SQL Server:

INNER JOIN 
  OPENROWSET('Microsoft.Jet.OLEDB.4.0',
             'Excel 8.0;Database=C:\foldername\spreadsheetname.xls;',
             'SELECT column1name, column2name, column3name, column4name
              FROM [worksheetname$]') EXT

Может ли кто-нибудь подтвердить, что яна правильном пути или даже лучше предоставить базовый пример?

Основная логика Psuedo заключается в следующем: Для каждой записи в таблице Oracle USER_DEFINED, где CODE_FIELD равен "CRS" И где у меня есть значение наВ таблице с соответствующим номером счета обновите поле VALUE для этой записи в таблице Oracle USER_DEFINED, указав содержимое столбца «Значение» в таблице.

1 Ответ

0 голосов
/ 09 марта 2012

Не совсем то, что вы запрашиваете, но на вашем месте (и раз в год) я бы создавал операторы обновления в Excel, используя формулы конкатенации.

Если первые строки / столбцы Excel выглядят так:

ACCT_NBR | NEW_VALUE | CONSTRUCTED_SQL_STMT
123      | Hello     | ="Update USER_DEFINED Set VALUE = '"&B2&"' Where CODE_FIELD='CRS' And Account_Num='"&A2&"';"
456      | World     | ="Update USER_DEFINED Set VALUE = '"&B3&"' Where CODE_FIELD='CRS' And Account_Num='"&A3&"';"

Затем просто запустите копирование / вставку полученной серии операторов обновления в SQL * Plus. Любые, у которых нет совпадений в вашей БД, не будут запускать обновление, а те, которые соответствуют, будут обновлены.

Сделайте commit в конце, и все готово!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...