3

2 ステートメントの SQL ファイルをバッチ ジョブとして Linux マシンの isql ユーティリティに送信しようとしています。

最初のステートメントは を定義しVOLATILE TABLE、2 番目のステートメントは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
4

1 に答える 1

2

最後の ; を削除するだけです。SQLファイルから。私は試しました、それは私のために働きます。

于 2016-02-02T22:28:51.377 に答える