将 SAS 数字转换为 Teradata BIGINT 的数据类型不匹配

Datatype mismatch converting SAS numeric to Teradata BIGINT

我有一个带有数字变量 ACCT_ID(以及其他字段)的 SAS 数据集。它在 PROC CONTENTS 中的属性是:

#    Variable                 Type    Len    Format    Informat    Label
1    ACCT_ID                  Num       8    19.       19.         ACCT_ID

我知道该字段中没有任何非整数值,所以我想将其作为 BIGINT 存储在 Teradata 中,并且我已使用 dbtype 数据集选项指定了它像这样:

data td.output(dbtype=(ACCT_ID="BIGINT", <etc etc>));

但是,这会产生以下错误:

ERROR: Datatype mismatch for column: ACCT_ID.

该字段中没有缺失值或非整数值,即使我使用 round(acct_id, 1) 舍入 ACCT_ID 以显式删除任何 的浮点值,错误仍然存​​在可以存在。

奇怪的是,如果我在 Teradata 中将其指定为 DECIMAL(18,0) 而不是 BIGINT,则不会出现错误。我想这可能是一种解决方法,但我想了解如何从 SAS 数值变量在 Teradata 中创建整数字段,因为 SAS 不区分整数和浮点数类型。

SAS 不支持 BIGINT 数据类型。参见 http://support.sas.com/kb/34/729.html

Teradata's BIGINT data type is not supported in SAS/ACCESS Interface to Teradata. You cannot read or update a table containing a column with the BIGINT data type in SAS/ACCESS Interface to Teradata. Attempting to do so generates the following error message:

ERROR: At least one of the columns in this DBMS table has a datatype that is not supported by this engine.