在sas表上创建索引

时间:2019-07-04 15:53:16

标签: indexing sas

我在Linux服务器上有一个表,我想在我的PC(Win)上的SAS EG中为其创建索引。我有一个错误:

  

错误:由于文件XXX.xxx的编码与会话编码不匹配,或者文件的格式是另一台主机的本机格式,因此无法更新。

如何避免呢? 我的代码:

proc datasets library=mylib;
modify table;
index create names=(field1 field2 field3);
run;

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试在与当前EG会话编码不同的数据集上创建索引。

proc options option=encoding;
run;

将列出EG会话使用的编码

proc contents data=mylib.table:
run;

将显示数据集上的编码

如果它们不匹配,则最简单的方法是使用匹配会话的编码创建此数据集的副本,并在该副本上创建索引。

libname mylib '/location';
libname mylib2 '/location2' outencoding='UTF-8'; /* should match session encoding */
proc copy noclone in=mylib out=mylib2;
   select table;
run;

如果您需要保留编码以避免信息丢失,则此方法可能无效。在这种情况下,您将必须进行一些配置更改,以使EG以正确的编码调用SAS会话。这可能会有所帮助,但我自己没有这样做:

http://support.sas.com/kb/51/586.html

由于您只是在因操作系统不同而处理问题,因此我认为:

libname mylib '/location';
libname mylib2 '/location2`;
proc copy noclone in=mylib out=mylib2;
   select table;
run;

之后

proc datasets library=mylib2;
modify table;
index create names=(field1 field2 field3);
run;