Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Выгрузка expdp c командой query если таблицы нет  [new]
Дональд Трамп
Guest
Имеется скрипт экспорта c query нескольких табличек например:

query=USA2016.EXIT_POLL_RESULTS: where me_win='Y' and datecreate >=trunc(sysdate,'M') 


Мне надо гонять этот экспорт по большому количеству баз где может не быть одной из табличек.

В итоге на некоторых базах у меня валится

ORA-39034: Table EXIT_POLL_RESULTS does not exist.


Можно ли как-то сказать экпорту эсли нет таблички ну ничего страшного, выгружай дальше.
P.S. Проверять наличие табличек в каждой базе и составлять строку query для конкретной бд не подходит. муторно.
31 май 16, 09:59    [19239242]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Nobody1111
Guest
разделить экспорт на 2 отдельных - 1) тех таблиц, которые всегда есть и 2) таблицы, которой может не быть
31 май 16, 10:47    [19239598]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Дональд Трамп
Guest
Nobody1111, если разделить на две части у второй части будет таже самая ошибка (таблиц 10 и все они могут а могут не быть в разных комбинациях на каждой бд)
31 май 16, 10:52    [19239640]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Nobody1111
Guest
несложно догадаться, как быть в этом случае

хотя если это тоже муторно...
31 май 16, 10:58    [19239690]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Дональд Трамп
Guest
Nobody1111
несложно догадаться, как быть в этом случае

хотя если это тоже муторно...

Если тебе нечего сказать по делу. То лучше молчать. За умного сойдешь.
31 май 16, 11:03    [19239743]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Nobody1111
Guest
Дональд Трамп
Nobody1111
несложно догадаться, как быть в этом случае

хотя если это тоже муторно...

Если тебе нечего сказать по делу. То лучше молчать. За умного сойдешь.


Людям, которые не демонстируют некоторый минимальный уровень логики и интеллекта, а демонстрируют неуважительную манеру общения, здесь не будут не рады и вряд ли будут помогать.
31 май 16, 11:11    [19239828]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Дональд Трамп
Guest
Nobody1111 , ты про свою логику говоришь? твое предложение разделить на две части просто глупое, не решает проблемы и не отвечает на поставленный вопрос.

Так что минимальный уровень логики ты не продемонстрировал. Тока балабольство.
31 май 16, 12:06    [19240281]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
ma1tus
Member

Откуда:
Сообщений: 752
Дональд Трамп
P.S. Проверять наличие табличек в каждой базе и составлять строку query для конкретной бд не подходит. муторно.
да не особо вроде...
+ навскидку...

#!/bin/bash

# connect params
USER=$1
PASS=$2
TNS=$3

# datapump direcory
DPD=$4

# output files
DMP=dump_file_name.dmp
LOG=log_file_name.log


STR=`sqlplus -S ${USER}/${PASS}@${TNS} <<EOF
set heading off
set linesize 10000
WITH TablesQuery AS
(
  SELECT table_name,
         CASE WHEN table_name = 'EXIT_POLL_RESULTS' THEN
                'query=${USER}.' || table_name ||':"where me_win=''Y'' and datecreate >=trunc(sysdate,''M'')"'.
              WHEN table_name = 'OTHER_TABLE' THEN
                'query=${USER}.' || table_name ||':"where me_win=''Y'' and datecreate >=trunc(sysdate,''M'')"'
          END AS q_str
    FROM user_tables
   WHERE table_name IN ('EXIT_POLL_RESULTS', 'OTHER_TABLE')
),
TablesQueryStr AS
(
  SELECT Listagg(table_name, ',') WITHIN GROUP (ORDER BY table_name) AS t_str,
         Listagg(q_str, ' ') WITHIN GROUP (ORDER BY q_str) AS q_str
    FROM TablesQuery
)
SELECT 'directory=\$DPD schemas=\$1 include=TABLE:"IN (''' || t_str || ''')"' || ' ' || q_str
  FROM TablesQueryStr
 WHERE t_str IS NOT NULL;
EOF`

`expdp ${USER}/${PASS}@${TNS} ${STR} DUMPFILE=${DPD}:${DMP} LOGFILE=${DPD}:${LOG}`

31 май 16, 12:43    [19240431]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
dba123
Member

Откуда:
Сообщений: 1054
Дональд Трамп,

Можно попробовать сформировать список таблиц, например, так (export.par):
SCHEMAS=USA2016
INCLUDE=TABLE:"in (select table_name  from all_tab_columns where owner='USA2016' and column_name in ('ME_WIN','DATECREATE') group by table_name having count(*)>1 )"
QUERY="WHERE ME_WIN='Y' AND DATECREATE>=trunc(sysdate,'M')"
31 май 16, 15:25    [19241562]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Дональд Трамп
Guest
dba123, это именно то что нужно!!! Спасибо

Nobo111, а ты купи учебник по логике.
1 июн 16, 10:25    [19244323]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Nobody1111
Guest
при встрече с подобными ТС-у типами вспоминаю афоризм
Марк Твен
Никогда не спорьте с идиотами. Вы опуститесь до их уровня, где они вас задавят своим опытом.

и следую ему
1 июн 16, 11:34    [19244719]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка expdp c командой query если таблицы нет  [new]
Дональд Трамп
Guest
Nobody1111
при встрече с подобными ТС-у типами вспоминаю афоризм
Марк Твен
Никогда не спорьте с идиотами. Вы опуститесь до их уровня, где они вас задавят своим опытом.

и следую ему


Тебе нечего сказать по делу.
2 июн 16, 13:04    [19249618]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить