2014-01-21 1 views
2

У меня есть код SAS, который записывается на конкретный лист в книге excel. На других листах есть формулы, которые смотрят на этот лист, поэтому рабочая книга - это в основном шаблон, который заполняется, когда мой код запущен.Использование команды SAS X с сервером PCFILES

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

SAS находится на сервере linux, и я использую сервер файлов pc для записи в excel. Как настроить команду x для копирования файла и изменения его имени на удаленном сервере?

+0

Является ли физическая книга рабочей машиной на сервере linux (или на общем ресурсе, который он отобразил)? – Joe

+0

Книга находится на сервере Windows. Я переключался между удаленными соединениями с помощью proc export и использованием libname с движком pcfiles. – user3220490

+0

Итак, сервер linux не может напрямую «видеть» книгу? – Joe

ответ

0

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

Можете ли вы получить доступ к файлам на сервере sas через окна (с общим ресурсом SMB или аналогичным)? Это самый простой способ сделать это. Если вы не можете, то очень легко настроить Samba на linux.

Во-первых, сохраните шаблон excel на сервере SAS, где его можно увидеть на компьютере с Windows (с его сервером файлов ПК).

Допустим, файл находится в '/home/files/template.xlsx' на сервере SAS, и этот каталог является общим и доступным на вашем сервере Windows как '\ linuxservername \ files \ template.xlsx' (или \ 192.168.1.5 \ files \ template.xlsx, если вы используете IP-адреса)

Теперь вам просто нужно использовать путь SMB для материала PCFILES и локальный путь linux для команды x. Что-то вроде

x 'cp /home/files/template.xlsx /home/files/output.xlsx'; 
libname output PCFILES 
    path='\\linuxservername\files\template.xlsx' 
    server='PCFilesServerName' 
    port=1234; 

Обратите внимание, что при подаче путь к PCFiles, вы используете сетевой адрес (с вашего окна коробки должен уметь читать и писать), и при выполнении команды копирования используется локальная адрес.

Вы также можете использовать сетевой путь для всего, что зависит от конфигурации вашей системы. Когда я попробовал это, я не смог заставить его работать, так как сервер unix ему не понравился (он разделяет папку по SMB, но не знал, как получить к ней доступ из командной строки).

Смежные вопросы