Я хотел бы написать сценарий Teradata bteq, который экспортирует все DDL для моих таблиц, фиксируя выходные данные команды show.Я подумал, что это будет так же просто, как экспортировать результаты из команды show, выполненной из BTEQ, в файл, и этот подход сработал (см. Сценарий ниже) отлично для таблиц без сжатия столбцов.
Проблема в том, что когда есть столбцы с большим количеством сжатых значений, вывод оборачивается и иногда разбивает строку в середине списка сжатых значений (например, для «BUSINESS» вы получаете «BUS, а затем следующую строку»).начинается с INESS '. Тот факт, что перенос слов сжатых значений означает, что я не могу запустить экспортированный DDL.
Сначала я подумал, что установка ширины в супер-большое число предотвратит перенос слов, ноЯ не могу установить ширину на достаточно большое значение, чтобы определить ширину сжатой строки значений. Это означает, что мой единственный вариант - запустить оператор show в Teradata SQL Assistant и скопировать и вставить его по одному, чтобы создать мойСценарий создания таблицы DDL. Я должен думать, что есть лучший способ перехватить существующий DDL таким образом, чтобы экспортированный DDL был исполняемым?
#!/bin/ksh
# -------------------------------------------------------------------------
# Environment Variables
LDAP_IND=".logmech LDAP"
TD_UID=uXXXXX
TD_PWD='pwXXXX'
TD_TDPID=TD1
OUT_SCRIPT=./DDL.txt
echo "-----------------------------------"
echo "TD_UID =<${TD_UID}>"
echo "-----------------------------------"
###########################################################################
bteq<<EOBTQ
${LDAP_IND}
.logon ${TD_TDPID}/${TD_UID},${TD_PWD}
.IF ERRORCODE>0 THEN .GOTO ABEND
--# START SQL ###########################################################
.set width 999
.export report file=${OUT_SCRIPT}
.set defaults
.set format off
.set foldline on 1,2,3,4
.set sidetitles off
-- IS WIDTH MAX ENOUGH TO ALWAYS ACCOMODATE ALL COMPRESSED VALUES?
.set width 65531
-- Export DDL for Tables Using Show Commands
show sel * from DB_PRODUCTS.t_product_ref;
show sel * from DB_PRODUCTS.t_acct;
--# FINISH SQL ###########################################################
.LABEL GOODEND;
.QUIT;
.LABEL ABEND;
.QUIT ERRORCODE;
EOBTQ