|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
Добрый день. Вопрос по команде COPY из sqlplus: Пытаюсь скопировать данные из таблицы из одной базы в другую. В доке по команде copy следующий синтаксис: Код: plsql 1. 2.
Но я чет нигде не нашел ограничений, с тем, чтоб кол-во столбцов в разделе [(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, но об этом забыли написать? Или я как-то не так вызов делаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 16:39 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
Вы рассуждаете чисто теоретически, или вы получаете конкретную ошибку в конретной ситуации? " Лучше один раз увидеть, чем сто раз услышать..." ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 18:58 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
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 таблица уже существует, имена столбцов " пришиты крепко, не оторвёшь ". Теперь перечитываем выденное во фрагменте из доки и думаем... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 07:49 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
Поправлюсь относительно 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. Но ваш вопрос, полагаю, относится к уже сущестующим таблицам. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 07:56 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 08:24 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
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 толкает документописателей на подобную ахинею. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 10:13 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
-2-CTAS требует создания дблинка на стороне сервера, который может работать и с HS Бывают ситуации, когда DBA не хотят создавать dblink. Причины разные, от лени до бюрократии или саботажа. Или сервера находятся в сети настолько "далеко" друг от друга, между ними куча файрволов, что для решения задачи надо привлекать сисадминов из нескольких разных отделов или филилов, что тоже не добавляет скорости к решению... А данные нужны вчера. Тогда COPY или BRIDGE из SQLcl очень в тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 11:09 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
Первоначальную ошибку я словил на невозможности вставить данные в таблицу с виртуальным столбцом (ORA-54013: Операция INSERT для виртуальных столбцов запрещена). Попытался ее обойти перечислением необходимых столбцов, выкинув оттуда виртуальный (как мне показалось из документации COPY это позволяет, но как оказалось - нет). Получил ошибку (CPY-0007: Select - список содержит меньше столбцов, чем конечная таблица) IMHO, в доке это как-то уж очень не очевидно написано PS проблему в итоге обошли удалением виртуального столбца перед копированием и созданием его заново после копирования ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 11:47 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
j2kпроблему в итоге обошли удалением виртуального столбца invisible ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 12:04 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
-2-invisible Речь о invisible column ? у нас 11g :( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 12:31 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
А версия самого sqlplus ? Более старшая может просто ничего не знать о виртуальных столбцах ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 13:25 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
-2-....Non-Oracle требует разворачивания гетерогенки.... В древние, древние времена Net 8, non oracle мог жить на клиенте без всяких гетерогенок и прочего. OCA (Open Client Adapter) Т.ч., подозреваю, этот кусок доки из тех древних времен. Когда на клиенте можно было подцепится к ODBC через OCA и sqlplus командой COPY затолкать таблицу в Oracle. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 13:41 |
|
sqlplus команда copy
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровА версия самого sqlplus ? 12.2.0.1.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2019, 13:49 |
|
|
start [/forum/topic.php?fid=52&msg=39796926&tid=1882617]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
105ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 208ms |
0 / 0 |