Sql 如何从Teradata SP写入外部文件?

Sql 如何从Teradata SP写入外部文件?,sql,teradata,Sql,Teradata,我正在从事Oracle到TD的迁移项目。在这种情况下,我必须从Teradata SP编写一个外部文件,该文件在unix中通过ksh从bteq调用。我曾想过从bteq本身编写一个文件,但问题是,我有很多变量无法在bteq中使用。请帮帮我 提前感谢,编写正确的KSH脚本调用BTEQ可以合并UNIX环境变量。下面是一个简单的例子,说明我过去是如何做到这一点的。我相信您可以扩展这个示例,甚至在要执行的SQL语句中包含解析环境变量 #!/usr/bin/ksh ######################

我正在从事Oracle到TD的迁移项目。在这种情况下,我必须从Teradata SP编写一个外部文件,该文件在unix中通过ksh从bteq调用。我曾想过从bteq本身编写一个文件,但问题是,我有很多变量无法在bteq中使用。请帮帮我


提前感谢,

编写正确的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}