我们有一个充满BIGINT数据类型Teradata数据库。 SAS是该组织的主要分析引擎。在SAS访问库扼流圈BIGINT,因此强制所有代码把他们送回SAS之前投下变量为整数或小数。例如:

proc sql;
connect to database (blah blah);
create table sas_dataset as 
  select * from connection to database(
    select
      cast(bigint_var as integer),
      varchar_var,
      char_var,
    from some_table
    );
  disconnect from database;
  quit;

有谁知道一种方法来解决这个问题?可能用于铸造变量或SAS接入修复宏?请记住,有数以千计的变量,在这个数据库是BIGINT并更改数据库出了问题。

有帮助吗?

解决方案

如果你不能修复它在SAS的一面,你总是可以创建一组对Teradata的侧视图做铸造。然后有SAS访问的意见:

create view sas_cast_db.some_table as 
select col1, col2, cast(bigint_var as decimal(18)), col3
from real_db.some_table;

既然你有很多的表,有可能写一些SQL从数据字典自动生成这些。

其他提示

的问题是SAS只能处理最多15个数字组成的BIGINT数据类型。 SAS还提供了一些变通的SAS 9.2(一个上面提到的)这个问题。你也可以得到你的SAS平台管理为SAS服务器(明显地告诫)安排进行更新,以便它截断BIGINT领域的15位数字,或更新您的LIBNAME语句来设置所有BIGINTs被自动转换。

http://support.sas.com/kb/39/831.html

示例代码

data temp1; 
   set mylib.bigclass (dbsastype= (id='char(20)'));
run;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top