我们有一些SAS程序,他们过去运行良好,我们的旧Oracle数据库。
我们已经迁移到Amazon RDS上的新Oracle数据库(我不知道它是否相关)和新的SAS服务器实例(从9.1到9.3,不知道是否相关)。 在运行我们的程序时,当字符串类型(通过proc sql或data步骤上传到Oracle)被随机(?)转换为CLOB或LOB时,我们一直面临着这个问题。 我们的字符串不超过Oracle授权的最大长度(对于varchar类型),它们实际上很短,但数据仍然上传到CLOB。这会影响我们读取数据的整个过程。
我们发现了这种解决方法,但我不是粉丝:
data oracledb.new_data;
length REGION $ 50;
format REGION $char50.;
set old_data;
run;
事实是,许多很多字符串列被随机转换为CLOB
你知道如何解决这个问题吗?它来自Oracle方面(我怀疑它)还是来自SAS方面(但改变了什么?)
感谢您的帮助, 我希望我已经为您提供了足够的信息
答案 0 :(得分:1)
好的发现错误。
在转换数据时,如果不指定输出类型,SAS数据集可以自动继承很长很长的格式。
以下是修复: http://support.sas.com/kb/24/804.html
这会将长度减少到最小而不会丢失数据。上传到Oracle时,将调整格式。
注意:我只是将数据集的大小减少了80%。我向所有人推荐这个宏。
跟进问题(请在评论中回答): 这只会改变格式,而不会改变信息。这是一个问题,它会影响性能吗?
谢谢!