powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sqlplus команда copy
14 сообщений из 14, страница 1 из 1
sqlplus команда copy
    #39796674
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Вопрос по команде COPY из sqlplus:

Пытаюсь скопировать данные из таблицы из одной базы в другую. В доке по команде copy следующий синтаксис:
Код: plsql
1.
2.
COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)]
USING query



Но я чет нигде не нашел ограничений, с тем, чтоб кол-во столбцов в разделе [(column, column, column, ...)] должно совпадать с кол-вом столбцов в таблице в которую мы копируем, есть только про то, что кол-во должно совпадать с кол-вом в селекте (что логично)

(column, column, column, ...)
Specifies the names of the columns in destination_table. You must enclose a name in double quotes if it contains lowercase letters or blanks.

If you specify columns, the number of columns must equal the number of columns selected by the query. If you do not specify any columns, the copied columns will have the same names in the destination table as they had in the source if COPY creates destination_table.

Получается что [(column, column, column, ...)] не используется для APPEND/INSERT, но об этом забыли написать? Или я как-то не так вызов делаю?
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39796777
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы рассуждаете чисто теоретически, или вы получаете конкретную ошибку в конретной ситуации?

" Лучше один раз увидеть, чем сто раз услышать..."
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39796924
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.oracle.com/database/121/SQPUG/apb.htm#SQPUG140 By default, the copied columns have the same names in the destination table that they have in the source table.
If you want to give new names to the columns in the destination table, enter the new names in parentheses after the destination table name. If you enter any column names, you must enter a name for every column you are copying.
j2kПолучается что [(column, column, column, ...)] не используется для APPEND/INSERT, но об этом забыли написать?
При APPEND/INSERT destination таблица уже существует, имена столбцов " пришиты крепко, не оторвёшь ".
Теперь перечитываем выденное во фрагменте из доки и думаем...
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39796926
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправлюсь относительно APPEND
Use INSERT to insert data into an existing table.
Use APPEND when you want to insert data in an existing table, or create a new table if the destination table does not exist.
Но ваш вопрос, полагаю, относится к уже сущестующим таблицам.
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39796936
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
Note :
In general, the COPY command was designed to be used for copying data between Oracle and non-Oracle databases .
You should use SQL commands (CREATE TABLE AS and INSERT) to copy data between Oracle databases.
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797019
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Note :
In general, the COPY command was designed to be used for copying data between Oracle and non-Oracle databases .
You should use SQL commands (CREATE TABLE AS and INSERT) to copy data between Oracle databases.Non-Oracle требует разворачивания гетерогенки. И, с другой стороны, CTAS требует создания дблинка на стороне сервера, который может работать и с HS. Достаточно странно приводить в качестве замены неравнозначную архитектуру для одной из функций.
Возможно деперекейт команды copy толкает документописателей на подобную ахинею.
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797077
rpovarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-CTAS требует создания дблинка на стороне сервера, который может работать и с HS
Бывают ситуации, когда DBA не хотят создавать dblink. Причины разные, от лени до бюрократии или саботажа. Или сервера находятся в сети настолько "далеко" друг от друга, между ними куча файрволов, что для решения задачи надо привлекать сисадминов из нескольких разных отделов или филилов, что тоже не добавляет скорости к решению...
А данные нужны вчера. Тогда COPY или BRIDGE из SQLcl очень в тему.
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797124
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первоначальную ошибку я словил на невозможности вставить данные в таблицу с виртуальным столбцом (ORA-54013: Операция INSERT для виртуальных столбцов запрещена). Попытался ее обойти перечислением необходимых столбцов, выкинув оттуда виртуальный (как мне показалось из документации COPY это позволяет, но как оказалось - нет). Получил ошибку (CPY-0007: Select - список содержит меньше столбцов, чем конечная таблица)
IMHO, в доке это как-то уж очень не очевидно написано
PS проблему в итоге обошли удалением виртуального столбца перед копированием и созданием его заново после копирования
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797146
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
j2kпроблему в итоге обошли удалением виртуального столбца invisible
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797179
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-invisible
Речь о invisible column ? у нас 11g :(
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797238
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А версия самого sqlplus ?
Более старшая может просто ничего не знать о виртуальных столбцах
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797254
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-....Non-Oracle требует разворачивания гетерогенки....
В древние, древние времена Net 8, non oracle мог жить на клиенте без всяких гетерогенок и прочего.

OCA (Open Client Adapter)

Т.ч., подозреваю, этот кусок доки из тех древних времен. Когда на клиенте можно было подцепится к ODBC через OCA и sqlplus командой COPY затолкать таблицу в Oracle.

AFAIK
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797262
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровА версия самого sqlplus ?
12.2.0.1.0
...
Рейтинг: 0 / 0
sqlplus команда copy
    #39797293
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-, Вячеслав Любомудров
да с invisble сработало (ошибочно думал, что для этого именно база нужна 12 версии). Спасибо большое.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sqlplus команда copy
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]