2017-05-15 39 views
0

いくつかのデプロイメントツールを作成しようとしていますが、BTEQは使用したくありません。私はPowerShellのTeradata.Client.Providerで作業しようとしていましたが、テーブルの作成時に構文エラーが発生しています。BTEQを使用せずにTeradataでIF文を使用する方法

[Teradata Database] [3706] Syntax error: expected something between ';' and the 'IF' keyword.

SELECT * FROM DBC.TablesV WHERE DatabaseName = DATABASE AND TableName = 'MyTable'; 
IF ACTIVITYCOUNT > 0 THEN GOTO EndStep1; 

CREATE MULTISET TABLE MyTable , 
    NO FALLBACK , 
    NO BEFORE JOURNAL, 
    NO AFTER JOURNAL, 
    CHECKSUM = DEFAULT, 
    DEFAULT MERGEBLOCKRATIO 
     (
      MyColId   INTEGER GENERATED ALWAYS AS IDENTITY 
                (START WITH 1 
                INCREMENT BY 1 
                MINVALUE 0 
                MAXVALUE 2147483647 
                NO CYCLE) 
                NOT NULL, 
      MyColType   VARCHAR(50)  NULL, 
      MyColTarget  VARCHAR(128) NULL, 
      MyColScriptName VARCHAR(256) NULL, 
      MyColOutput  VARCHAR(64000) NULL, 
      isMyColException BYTEINT(1)  NULL, 
      ExceptionOutput   VARCHAR(64000) NULL, 
      MyColBuild   VARCHAR(128) NULL, 
      MyColDate   TIMESTAMP  NOT NULL 
     ) 
    PRIMARY INDEX PI_MyTable_MyColLogId(MyColLogId); 

LABEL EndStep1; 

私はそれが我々が作成した他の展開ツールでよく働き、ハックのビットを必要としているが見つからないてきたように、私はむしろ、BTEQを使用することはありません。そのツールの使用を避けるために使用できるものはありますか?

答えて

1

何か構文エラー

INTEGERMyColIdで、VARCHAR(max)ExceptionOutputであるため、CREATEは失敗します。これはTeradataの未知のデータ型です。

+0

これらの間違いを修正しましたが、このエラーが発生しました。[Teradata Database] [3706]構文エラー: ';'と 'IF'キーワードを使用します。私はこれを反映するための質問を更新しました。 – Russ960

+0

もちろん、IFはBTEQ構文の一部です。ロジックをPowerShellに移す必要があります。選択を実行し、行を戻すかどうかを確認し、そうでなければCREATEを実行します。 – dnoeth

+0

これは、BTEQ経由以外のツールを使用するツールや、実行前に私の側のロジックを行うツールがないことを私が理解していることを確認します。 – Russ960

関連する問題