Как я могу считать набор данных SAS?

У меня есть много файлов в формате SAS, и я хотел бы иметь возможность считать их в программах за пределами SAS. У меня нет ничего кроме основной системы SAS установленным. Я мог вручную преобразовать каждого, но я хотел бы способ сделать это автоматически.

9
задан Chris B. 3 March 2010 в 19:11
поделиться

3 ответа

Вам потребуется работающий сеанс SAS действовать как сервер данных. Затем вы можете получить доступ к данным SAS с помощью ODBC, см. Руководство по драйверам SAS ODBC .

Чтобы запустить локальный сервер SAS ODBC, вам необходимо:

  1. Определить настройку сервера SAS ODBC, как описано в руководстве по драйверам SAS ODBC. В следующем примере я подключусь к серверу, который настроен с именем «loclodbc».
  2. Добавьте запись в файл служб (C: \ WINDOWS \ system32 \ drivers \ etc \ services), например:

    • loclodbc 9191 / tcp

    ... установите номер порта (здесь: 9191 ), чтобы он соответствовал вашей локальной настройке. Имя службы "loclodbc" должно совпадать с именем сервера, как определено в настройке ODBC. Обратите внимание, что термин «Сервер» не имеет ничего общего с именем физического хоста вашего ПК.

Теперь ваш сервер SAS ODBC готов к работе, но ему не назначены доступные ресурсы данных.Обычно вы устанавливаете это на вкладке «Библиотеки» в процессе установки SAS ODBC, но, поскольку вы хотите указывать на источники данных «на лету», мы опускаем это.

Теперь из клиентского приложения вы можете подключиться к серверу SAS ODBC, указать ресурсы данных, к которым вы хотите получить доступ, и получить данные.

SAS указывает на ресурсы данных через концепцию «LIBNAME». Имя библиотеки - это логический указатель на набор данных.

Таким образом,

LIBNAME sasadhoc 'C:\sasdatafolder';

назначает папке «C: \ sasdatafolder» логический дескриптор «sasiodat».

Если вам изнутри SAS нужен доступ к данным, находящимся в файле таблицы данных SAS "C: \ sasdatafolder \ test.sas7bdat", вы должны сделать что-то вроде этого:

LIBNAME sasadhoc 'C:\sasdatafolder';
PROC SQL;
  CREATE TABLE WORK.test as
  SELECT *
  FROM sasadhoc.test
  ;
QUIT;

Итак, что нам нужно сделать, это сообщить наш сервер SAS ODBC, чтобы назначить имя библиотеки C: \ sasdatafolder из нашего клиентского приложения. Мы можем сделать это, отправив ему этот запрос на выделение ресурсов при запуске, используя параметр DBCONINIT.

Я сделал для этого несколько примеров кода. Мой пример кода также написан на языке BASE SAS. Поскольку очевидно, что существуют более умные способы доступа к данным SAS, чем подключение SAS к SAS через ODBC, этот код служит только в качестве примера.

Вы должны уметь использовать полезные элементы и создать собственное решение в среде программирования, которую вы используете ...

Пример кода подключения SAS ODBC:

PROC SQL;
  CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'");
  CREATE TABLE temp_sas AS
  SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test);
QUIT;

Волшебство происходит в «ПОДКЛЮЧЕНИИ К ODBC. .. "часть кода, присваивая имя библиотеки папке, в которой находятся необходимые данные.

6
ответ дан 4 December 2019 в 12:17
поделиться

У меня есть никогда не пробовал http://www.oview.co.uk/dsread/ , но это может быть то, что вы ищете: "простая утилита командной строки для работы с наборами данных в формате файла SAS7BDAT . " Но учтите: «Это программное обеспечение следует считать экспериментальным, и его точность не гарантируется. Вы используете его на свой страх и риск. На данный момент оно будет работать только с несжатыми файлами SAS7BDAT в формате Windows».

2
ответ дан 4 December 2019 в 12:17
поделиться

Я думаю, вы сможете использовать ADO. Подробности см. На сайте поддержки SAS .

Заявление об ограничении ответственности:

  1. Я некоторое время не смотрел на это
  2. Я не уверен на 100%, что это не требует дополнительных лицензий.
  3. Я не уверен, что вы можете сделать это, используя Python
2
ответ дан 4 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: