Sql 如何从Teradata SP写入外部文件?
我正在从事Oracle到TD的迁移项目。在这种情况下,我必须从Teradata SP编写一个外部文件,该文件在unix中通过ksh从bteq调用。我曾想过从bteq本身编写一个文件,但问题是,我有很多变量无法在bteq中使用。请帮帮我Sql 如何从Teradata SP写入外部文件?,sql,teradata,Sql,Teradata,我正在从事Oracle到TD的迁移项目。在这种情况下,我必须从Teradata SP编写一个外部文件,该文件在unix中通过ksh从bteq调用。我曾想过从bteq本身编写一个文件,但问题是,我有很多变量无法在bteq中使用。请帮帮我 提前感谢,编写正确的KSH脚本调用BTEQ可以合并UNIX环境变量。下面是一个简单的例子,说明我过去是如何做到这一点的。我相信您可以扩展这个示例,甚至在要执行的SQL语句中包含解析环境变量 #!/usr/bin/ksh ######################
提前感谢,编写正确的KSH脚本调用BTEQ可以合并UNIX环境变量。下面是一个简单的例子,说明我过去是如何做到这一点的。我相信您可以扩展这个示例,甚至在要执行的SQL语句中包含解析环境变量
#!/usr/bin/ksh
###############################################################################
SHELL_NAME=`basename $0`
PRG_NAME=`basename ${SHELL_NAME} .ksh`
BTQLOG=${PRG_NAME}.log
BTQOUT=${PRG_NAME}.out
LOGON=${PRG_NAME}.con
#
CREATEUS='create_user.spl'
#
if [[ ! -e ${CREATEUS} ]]; then
echo "FAILED: Missing ${CREATEUS} - Place ${CREATEUS} in same location as ${SHELL_NAME}"
return 1
fi
#
bteq <<EOBTQ > ${BTQLOG} 2>&1
.run file=${LOGON};
.SET WIDTH 255;
/*
|| CREATE_USER Stored Procedure - This procedure is intended to be used by the individual SECADMIN user(s) to create databases
*/
.LABEL CREATE_USER_PROC
SELECT 'X' (TITLE '')
FROM DBC.TablesV
WHERE DatabaseName = 'SECADMIN'
AND TableName = 'CREATE_USER'
--AND TableKind = 'P'
;
.IF ACTIVITYCOUNT > 0 THEN .GOTO CREATE_ROLE_PROC;
.IF ERRORCODE > 0 THEN .QUIT ERRORCODE;
.COMPILE FILE = '${CREATEUS}';
.IF ERRORCODE > 0 THEN .QUIT ERRORCODE;
.LABEL EXIT_BTEQ
.QUIT ERRORLEVEL;
EOBTQ
#
STATUS=$?
#
if (( ${STATUS} != 0))
then
echo "FAILED: ${SHELL_NAME} completed with non-zero returne code - Check ${BTQLOG} for details"
else
echo "SUCCSSS: ${SHELL_NAME} - Check ${BTQLOG} for details"
fi
#
return ${STATUS}