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,因为我没有发现它已经很好运作在其他部署工具,我们已经创建并需要一些黑客。有什么我可以使用,避免使用该工具?
我纠正了这些错误,但得到这个错误:[Teradata Database] [3706]语法错误:预计在';'之间;和'IF'关键字。我更新了这个问题来反映这一点。 – Russ960
当然,'IF'是BTEQ语法的一部分,您需要将逻辑移入PowerShell。运行Select,检查它是否返回一行,否则运行CREATE ... – dnoeth
好的。这证实了我的理解,即任何工具中都没有任何工具可以通过BTEQ使用这个工具,或者在执行之前执行我的逻辑。 – Russ960