如何强制上传SAS(或全部转换为Unicode)?

时间:2014-04-08 16:02:46

标签: sas teradata

是否有允许完成上传的force功能?

data testlib.testTab
(
    dbtype=(
        var1 = 'VARCHAR(300)',
        var2 = 'VARCHAR(150)',
    )
)
;

set testt ; 
run ; 

这很好用,但很少我可能会收到untranslatable character错误。上次我有'只在一次观察中。我不知道为什么所有其他'上传都没问题,除了这个。我认为它既不是Unicode也不是拉丁语。

有什么方法可以强行上传,跳过那个观察。 。 。管他呢 。 。 。什么,但整个样本都失败了。

可能会将所有值转换为Unicode以确保上传成功

如何准备SAS数据集以确保上传得很好?

2 个答案:

答案 0 :(得分:2)

如果要将整个数据集强制转换为拉丁语编码,则应执行以下操作:

data clean ( endoding= "latin1" );
    set dirty ( encoding= "asciiany" );
run;

答案 1 :(得分:1)

如果您担心编码不同,可以考虑使用KCVT功能。从一种编码转换为另一种编码。例如,你可以试试。

data want;
set have;
yourvar = kcvt(yourvar,'utf8','ansi');
run;

您最好确定源数据的编码方式,并确保'from'匹配,因为如果源在该编码中无效,这将无效。

要尝试“跳过”错误,您可以尝试启用BULK_COPY并确保错误限制足够高。有关详细信息,请参阅this doc page。该页面的一个例子:

  

在以下示例中,SAS停止处理并暂停Fastload   当遇到第十个错误时。

libname mydblib teradata user=terauser pw=XXXXXX ERRLIMIT=10;

data mydblib.trfload(bulkload=yes dbtype=(i='int check (i > 11)') );
     do
         i=1 to 50000;output;
     end;
run;

将ERRLIMIT设置得足够低以警告您重要问题,并且足够高以跳过这样的琐碎问题;并在数据语句中使用bulkload=yes以确保它使用FASTLOAD。除非你真的想在i> 11上出错,否则请暂停int check部分内容。