Параметризация для динамического создания файла извлечения из таблицы Oracle с использованием Shell Script - PullRequest
0 голосов
/ 29 июня 2018

У меня есть требование, когда мне нужно параметризовать, чтобы сгенерировать один файл извлечения из нескольких таблиц Oracle с помощью сценария оболочки UNIX. Вот скрипт, который я написал для создания файла с разделителями табуляции, который будет извлекать все данные из таблицы EMPLOYEE. Мне нужно параметризовать TABLE_NAME, OWNER_NAME, USERNAME, PASSWORD и HOST, чтобы сгенерировать еще 12 таблиц. Итак, я хотел бы иметь только один SQL для вырождения экстракта для 12 таблиц путем передачи значений этих параметров при выполнении сценариев. Не могли бы вы показать мне, как мы можем изменить приведенный ниже скрипт и как передать параметр во время выполнения скрипта.

Второе требование - генерировать файл постепенно на основе столбца, например, ETL_UPDATE_TS. не могли бы вы показать мне это тоже.

Образцы скриптов

#!/usr/bin/ksh
TD=/mz/mz01/TgtFiles
MD=/mz/mz01/Scripts
#CAQH_Server=sftp.org
#UN=user
#PWD=password
#RD=Incoming
#RD=/home/

cd $TD

FILE="EMPLOYEE.TXT"

sqlplus -s scott/tiger@db  <<EOF

SET PAGES 999
SET COLSEP "    "
SET LINES 999
SET FEEDBACK OFF

SPOOL $FILE

SELECT * FROM EMP;

SPOOL OFF
EXIT
EOF

1 Ответ

0 голосов
/ 29 июня 2018

Обработка ваших параметров аналогично тому, как вы это делали для переменной $ FILE, и передача их в качестве параметров в сценарий

#!/usr/bin/ksh
TD=/mz/mz01/TgtFiles
MD=/mz/mz01/Scripts

cd $TD
FILE="undefined"
TABLE="undefined"
while getopts :f:t: opt
do
        case $opt in
                f)      FILE=${OPTARG} ;;
                t)      TABLE=${OPTARG} ;;
                *)      echo "invalid flag" ;;
        esac
done

if [ "$TABLE" == "undefined" ]; then
    echo "ERROR. TABLE is undefined, use -f option."
    exit 1
fi
# More required variables checks here

# create more options to parameterize connection
sqlplus -s scott/tiger@db  <<EOF

SET PAGES 999
SET COLSEP "    "
SET LINES 999
SET FEEDBACK OFF

SPOOL $FILE

SELECT * FROM $TABLE;

SPOOL OFF
EXIT
EOF

Выполнить как

my_script.sh -f "EMPLOYEE.TXT" -t "EMP"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...