我正在尝试从SAS导入Teradata表。 teradata表有21位数的代理键。 当我从SAS导入它时,代理键列以2.011E12145的形式导入,但其实际值是21位数。 我尝试了以下代码
Data chk;
format p_key $30.;
set chk;
p_key=surrogate;
run;
但这不起作用?
如何避免这种情况并以数字形式导入?
答案 0 :(得分:0)
请注意,SAS可以准确存储的最大整数是2 ^ 53-1(从内存中调用),即9,007,199,254,740,990(长16位)。然而,Teradata支持的数字高达2 ^ 64-1(BigInt数据类型),这比SAS的要大得多。
我怀疑您的SAS-Teradata访问权限已设置为自动将BigInt类型转换为在SAS中浮动,从而导致精度损失。
请参阅http://support.sas.com/kb/39/831.html。
我能看到的唯一其他解决方案是将21位数字键作为字符类型导入。您可以通过将BigInt转换为Teradata中视图内的char数据类型来完成此操作。 (参见上述链接的其他方式)