Windows 7 使用BTEQ在windows中计划查询
嗨,我刚刚使用BTEQ 我正在计划一个使用teradata连接运行的查询,查询结果应该转到带有分隔符的excel或txt(这样可以使用excel格式化) 我需要通过windows来执行此操作,所以我想应该是使用windows调度程序调度的*.bat 问题是我不知道如何打开连接、运行查询并将结果导出到*.xls或*.csv或*.txt 我已经将ODBC设置为连接到TD(我使用TD管理员并每天手动运行查询)Windows 7 使用BTEQ在windows中计划查询,windows-7,scheduled-tasks,teradata,Windows 7,Scheduled Tasks,Teradata,嗨,我刚刚使用BTEQ 我正在计划一个使用teradata连接运行的查询,查询结果应该转到带有分隔符的excel或txt(这样可以使用excel格式化) 我需要通过windows来执行此操作,所以我想应该是使用windows调度程序调度的*.bat 问题是我不知道如何打开连接、运行查询并将结果导出到*.xls或*.csv或*.txt 我已经将ODBC设置为连接到TD(我使用TD管理员并每天手动运行查询) 有什么想法吗 BTEQ不使用ODBC,而是使用CLI连接 您只需创建如下脚本: .logon
有什么想法吗 BTEQ不使用ODBC,而是使用CLI连接 您只需创建如下脚本:
.logon TDPID/username,password;
.OS if exist bla.txt del bla.txt; -- remove the file if it exists (otherwise BTEQ appends)
.export report file = bla.txt;
SELECT
TRIM(DataBaseName) || ',' ||
TRIM(TableName) || ',' ||
TRIM(Version) || ',' ||
TRIM(TableKind) || ',' ||
TRIM(ParentCount) (TITLE '')
FROM dbc.TablesV
SAMPLE 10
;
.export reset;
.EXIT;
TDPID
是TD系统的名称(或IP地址)
您需要使用TRIM
和|
手动格式化选择中的csv,并且必须使用COALESCE(TRIM(col),'')处理可能的空值
您也可以尝试使用古老的DIF格式,无需关心空值等
.export DIF file = bla.dif;
SELECT
DataBaseName
,TableName
,Version
,TableKind
,ParentCount
FROM dbc.TablesV
SAMPLE 10
;
在TD14中有一个名为CSV的表UDF,它负责空值和引用字符串,而不是TRIM
/COALESCE
/|
。您的语法也有点冗长:
WITH cte
(
DataBaseName
,TableName
,Version
,TableKind
,ParentCount
)
AS
(
SELECT
DataBaseName
,TableName
,Version
,TableKind
,ParentCount
FROM dbc.TablesV
SAMPLE 10
)
SELECT *
FROM TABLE(CSV(NEW VARIANT_TYPE
(
cte.DataBaseName
,cte.TableName
,cte.Version
,cte.TableKind
,cte.ParentCount
), ',', '"')
RETURNS (op VARCHAR(32000) CHARACTER SET UNICODE)) AS t1;
最后,运行BTEQ并重定向文件(您可以将其设置为BAT文件):
BTEQ
也可能有其他选项,例如TPT/FastExport脚本或将SQL放入Excel文件中,打开时会自动运行查询…欢迎使用堆栈溢出!请同时阅读和阅读。
BTEQ < myscript.txt