Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sqlplus команда copy / 14 сообщений из 14, страница 1 из 1
04.04.2019, 16:39
    #39796674
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
Добрый день. Вопрос по команде 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
04.04.2019, 18:58
    #39796777
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
Вы рассуждаете чисто теоретически, или вы получаете конкретную ошибку в конретной ситуации?

" Лучше один раз увидеть, чем сто раз услышать..."
...
Рейтинг: 0 / 0
05.04.2019, 07:49
    #39796924
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
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
05.04.2019, 07:56
    #39796926
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
Поправлюсь относительно 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
05.04.2019, 08:24
    #39796936
Viewer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
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
05.04.2019, 10:13
    #39797019
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
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
05.04.2019, 11:09
    #39797077
rpovarov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
-2-CTAS требует создания дблинка на стороне сервера, который может работать и с HS
Бывают ситуации, когда DBA не хотят создавать dblink. Причины разные, от лени до бюрократии или саботажа. Или сервера находятся в сети настолько "далеко" друг от друга, между ними куча файрволов, что для решения задачи надо привлекать сисадминов из нескольких разных отделов или филилов, что тоже не добавляет скорости к решению...
А данные нужны вчера. Тогда COPY или BRIDGE из SQLcl очень в тему.
...
Рейтинг: 0 / 0
05.04.2019, 11:47
    #39797124
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
Первоначальную ошибку я словил на невозможности вставить данные в таблицу с виртуальным столбцом (ORA-54013: Операция INSERT для виртуальных столбцов запрещена). Попытался ее обойти перечислением необходимых столбцов, выкинув оттуда виртуальный (как мне показалось из документации COPY это позволяет, но как оказалось - нет). Получил ошибку (CPY-0007: Select - список содержит меньше столбцов, чем конечная таблица)
IMHO, в доке это как-то уж очень не очевидно написано
PS проблему в итоге обошли удалением виртуального столбца перед копированием и созданием его заново после копирования
...
Рейтинг: 0 / 0
05.04.2019, 12:04
    #39797146
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
j2kпроблему в итоге обошли удалением виртуального столбца invisible
...
Рейтинг: 0 / 0
05.04.2019, 12:31
    #39797179
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
-2-invisible
Речь о invisible column ? у нас 11g :(
...
Рейтинг: 0 / 0
05.04.2019, 13:25
    #39797238
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
А версия самого sqlplus ?
Более старшая может просто ничего не знать о виртуальных столбцах
...
Рейтинг: 0 / 0
05.04.2019, 13:41
    #39797254
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlplus команда copy
-2-....Non-Oracle требует разворачивания гетерогенки....
В древние, древние времена Net 8, non oracle мог жить на клиенте без всяких гетерогенок и прочего.

OCA (Open Client Adapter)

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

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


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