创建Teradata易失性表并使用isql从表中选择

时间:2014-05-12 23:38:25

标签: teradata isql ddl

我试图将一个双语句SQL文件作为批处理作业提交给Linux机器上的isql实用程序。

第一个语句定义了VOLATILE TABLE,第二个语句是针对该表的SELECT语句。

Teradata服务器托管在远程计算机上,我已成功运行SELECT语句以将结果集返回给我的主机。

以下是SQL文件的示例。

CREATE MULTISET VOLATILE TABLE my_temp_table AS (
  SELECT 
    A.ID
    , MIN(A.DTE) AS FIRST_DATE
  FROM (
    SELECT
      X.ID
      , MIN(X.STRT_DTE) AS DTE
    FROM DATABASE0.TABLE_ABC AS X
    WHERE X.STRT_DTE BETWEEN (CURRENT_DATE - 7) AND CURRENT_DATE
    GROUP BY X.ID
    UNION ALL
    SELECT
      Y.ID
      , MIN(Y.STRT_DTE) AS DTE
    FROM DATABASE0.TABLE_XYZ AS Y
    WHERE Y.STRT_DTE BETWEEN (CURRENT_DATE - 7) AND CURRENT_DATE
    GROUP BY Y.ID
  ) AS A
GROUP BY A.ID
)
WITH DATA
ON COMMIT PRESERVE ROWS
;
SELECT TOP 10 * FROM my_temp_table;

当我运行以下命令时

cat my_two_statement_query.sql | isql -v -b -d',' mydsn myuid mypwd

我收到以下错误

[25000][Teradata][ODBC Teradata Driver][Teradata Database] Data definition not valid unless solitary.

我可以在Teradata客户端应用程序中运行这些语句 - Studio和SQL Assistant - 没有任何问题。

更新:我已经包含了odbc.ini文件的内容

[ODBC]
InstallDir=/path/to/installation/dir
Trace=0
TraceDll=/path/to/dll/odbctrac.so
TraceFile=/path/to/tracefile/odbc_trace.log
TraceAutoStop=0

[ODBC Data Sources]
proddsn=tdata.so

[proddsn]
Driver=/path/to/driver/tdata/so
Description=Teradata database
DBCName=TDPROD
LastUser=
Username=
Password=
Database=DATABASE0
DefaultDatabase=DATABASE0
NoScan=Yes

1 个答案:

答案 0 :(得分:2)

删除最后一个;来自您的SQL文件。我试过了,它适合我。