Windows 7 使用BTEQ在windows中计划查询

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

我正在计划一个使用teradata连接运行的查询,查询结果应该转到带有分隔符的excel或txt(这样可以使用excel格式化)

我需要通过windows来执行此操作,所以我想应该是使用windows调度程序调度的*.bat

问题是我不知道如何打开连接、运行查询并将结果导出到*.xls或*.csv或*.txt

我已经将ODBC设置为连接到TD(我使用TD管理员并每天手动运行查询)


有什么想法吗

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