Используя SQL * PLUS COPY изнутри cx_Oracle? - PullRequest
2 голосов
/ 01 ноября 2011

Нам нужно скопировать записи между двумя схемами базы данных Oracle.

Вручную, мы можем сделать это с помощью команды SQL * PLUS COPY:

http://www.oracleutilities.com/SQLPLus/copy.html

Однако мы хотели бы автоматизировать это с помощью cx_Oracle, если это возможно (нам также нужно сделать некоторые другие вещи - например, SSH-взаимодействия, следовательно, использовать Python и cx_Oracle).

Однако, если я попытаюсь выполнить COPY внутри cx_Oracle, команда, похоже, не понравится:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-00900: invalid SQL statement

Я предполагаю, что это потому, что COPY - это специфическая команда SQL * PLUS, а не часть стандартной спецификации SQL?

Так или иначе, есть ли способ заставить команду COPY (или любые другие специфичные для SQL * PLUS расширения) работать в cx_Oracle?

Я считаю, что можно использовать INSERT INTO ... SELECT для достижения чего-то похожего, однако для этого требуется ссылка на базу данных, если две рассматриваемые базы данных находятся на отдельных экземплярах или хостах Oracle, и у нас не всегда есть разрешение на создание эти ссылки.

Ура, Victor

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