我试图将一个双语句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
答案 0 :(得分:2)
删除最后一个;来自您的SQL文件。我试过了,它适合我。