Создание индекса по таблице sas - PullRequest
0 голосов
/ 04 июля 2019

У меня есть таблица на сервере Linux, и я хочу создать для нее индекс в SAS EG на моем ПК (Win). Я получил ошибку:

Ошибка: файл XXX.xxx не может быть обновлен, поскольку его кодировка не соответствует кодировке сеанса или файл имеет собственный формат для другого хоста.

Как мне этого избежать? мой код:

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

1 Ответ

0 голосов
/ 04 июля 2019

Я думаю, что вы пытаетесь создать индекс для набора данных, кодировка которого отличается от текущей сессии 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;
...