powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Импорт/экспорт записей между БД
11 сообщений из 11, страница 1 из 1
Импорт/экспорт записей между БД
    #39903947
heleknar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

Есть боевая и тестовая база ORACLE.
Надо каким-то образом, раз в сутки, автоматически производить импорт значений из нескольких таблиц боевой в аналогичные таблицы тестовой.

Проблема в том, что в одной таблице, среди 60 других колонок, есть виртуальный столбец, и прямым INSERT INTO или DBMS_COMPARISON это сделать не получится, надо править инсерт, убирая этот столбец.

В другой таблице, при вставке возникает ошибка:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Insert into TABLE1 (COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8, COL9, COL10, COL11, COL12, COL13, COL14, COL15, COL16, 
COL17, COL18, COL19, COL20, COL21, COL22, COL23, COL24, COL25, COL26,  COL27, COL28, COL29,
COL30, COL31, COL32, COL33, COL34, COL35, COL36, COL37, COL38, COL39, COL40, COL41, COL42, COL43, COL44,
COL45, COL46, COL47, COL48, COL49, COL50, COL51, COL52, COL53, COL54, COL55, COL56, COL57, COL58, COL59)
values ('63618','2','1',to_date('15.01.19','DD.MM.RR'),null,'321654987','USER18',
'"РОМАШКА"',null,'1111','12345678','"РОМАШКА LTD"','2','12345678','123456789',null,null,null,'0','RU','RU','0',null,
'www.ромашка.ru',null,null,null,null,null,'123456748','ООО "РОМАШКА"',null,null,to_date('08.09.19','DD.MM.RR'),
'Городская Комиссия По контролю пони',null,null,null,null,null,null,null,null,null,'1',null,'г.Эквестрия',
null,null,'2',null,null,null,null,null,null,'46.90;',null,
null)

Error at Command Line : 8 Column : 23
Error report -
SQL Error: ORA-00904: "COL59": недопустимый идентификатор
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:


Что самое забавное, при этом таблица нормально работает как в бою, так и на тесте. В COl59 везде стоит null.

Пожалуйста, подскажите, либо какой-то несложный способ импорта или синхронизации таблиц, который позволит избежать этих проблем. Таблицы, при этом увешаны триггерами и прочим обвесом.

Или каким запросом из 60 колонок убрать плохую колонку и из 60 VALUES убрать значение для этой колонки?

Спасибо!
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39903956
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heleknar
каким запросом из 60 колонок убрать плохую колонку и из 60 VALUES убрать значение для этой колонки?



Динамически сформировать SQL по user_tab_cols.
Заодно в имени колонок багу найдете.
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39903960
heleknar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,
Я пытался что-то изобразить с user_tab_cols, путнего ничего не получилось.
Покажите, пожалуйста, как в мой запрос вставит user_tab_cols.
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904003
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heleknar
как в мой запрос вставит user_tab_cols.


Не вставить USER_TAB_COLS в ваш запрос, а ваш запрос сформировать на основании USER_TAB_COLS.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare
  q varchar2(1000) := 'select ';
begin
  for c in (select column_name from user_tab_cols where table_name = 'SMCARD' order by column_id) loop
    q := q || c.column_name || ' , ';
  end loop;
  q := substr(q, 1, length(q) - 2);
  q := q || 'from SMCARD';
  dbms_output.put_line(q);
end;
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904037
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heleknar
12.1.0.2.0
heleknar
Проблема в том, что в одной таблице, среди 60 других колонок, есть виртуальный столбец , и прямым INSERT INTO
RTFM invisible
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904056
heleknar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
heleknar
12.1.0.2.0
heleknar
Проблема в том, что в одной таблице, среди 60 других колонок, есть виртуальный столбец , и прямым INSERT INTO
RTFM invisible

Да он вполне себе видимый. Если в Девелопере таблицу смотреть то:
Код: plsql
1.
"STOLBIK_GG" CHAR(3 BYTE) GENERATED ALWAYS AS (CASE  WHEN "STOLBIK"='RUR' THEN NULL ELSE "STOLBIK" END) VIRTUAL 


Можно в него значение насильно Инсертом вставить? Или заставить сгенерироваться на основании значении поля STOLBIK.
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904061
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heleknar
ElicRTFM invisible
Да он вполне себе видимый.Поразмысли над тем, чтобы эту ситуацию исправить.
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904063
heleknar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
heleknar

Код: plsql
1.
2.
3.
Error report -
SQL Error: ORA-00904: "COL59": недопустимый идентификатор
00904. 00000 -  "%s: invalid identifier"



Оказывается я сам - дурак.
Я был уверен что таблицы одинаковые, а оказывается, только-что в таблицу добавили поле COL59.
Таким образом из таблицы-донора тянулось 59 колонок, а в таблице-реципиенте было 58 колонок, разумеется, одна не лезла.

Вопрос с виртуальной колонкой остаётся актуальным.
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904068
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heleknar

Можно в него значение насильно Инсертом вставить?


Нельзя - на то он и вычисляемый. И что ты подразумеваешь под "импорт". Datapump прекрасно опускает вычисляемые поля. Ну а если "импорт" доморощенный и генерирует INSERT, то генерируй используя DBATAB_COLS c WHERE VIRTUAL_COLUMN = 'NO'.

SY.
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904069
heleknar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
heleknar
пропущено...
Да он вполне себе видимый.
Поразмысли над тем, чтобы эту ситуацию исправить.

Предлагаешь в боевой сделать столбец этот невидимым?
Как-то страшновато, не уверен что в системе нигде не используется select *.
...
Рейтинг: 0 / 0
Импорт/экспорт записей между БД
    #39904081
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heleknar
Как-то страшновато, не уверен что в системе нигде не используется select *.
Тогда выбирай: либо шашечки, либо ехать.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Импорт/экспорт записей между БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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