Ответ на задачу по Download Excel files from FTP.

Всем добрый день.

Ниже привожу свой вариант решения задачи из предыдущего посата.

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

Для начала немного расширю задачу тем, что на FTP сервере лежит не один файл, а много. Также имена файлов заранее не известны.

Как мы видели ошибка выглядела следующим образом:This «filename FTP» access method is not supported by «proc import». Please copy the file to local disk before running the procedure.

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

И так последовательность действий:

1.  Получаем список файлов и их расширения, находящихся на FTP сервере:

В результате мы получим в таблице dirlist полный список файлов из папки Files

2. Теперь задача закачать необоходимые нам файлы. Для этого напишим следующий макрос:

Данный макрос:

  1. принимает на вход файл, который нужно перекачать в локальную дирректрию.
  2. создает временный файл copy.txt, куда пишутся команды ftp (логин, пароль, взять файл, выход)
  3. иксами переходим в нужную дирректорию
  4. иксами запускаем созданный файл на исполнение
  5. иксами удаляем наш файл.

Далее просто вызываем данный макрос в шаге data set.

Результатом будет полная копия всех файлов с FTP в папке C:SASDATA на локальной машине.

И уже после этого спокойно используем proc import.

Вот такое решение задачи.

P.S.
Хочу сразу заметить, что имена файлов могут начинаться с цифр, а также содеражать больше 32 символов в названии, поэтому когда будите делать Proc import будьте внимательны.

Также можно сделать Proc import универсальным, т.е. оберунуть этот процесс в макрос, который на вход будет помимо названия принимать еще и размерность файла.
Получиться что-то вроде этого:

В данном случае макрос получает на вход:
filename — имя файла
sasname — имя sas файла, куда мы закачиваем данные
ftype — размерность файла (txt, csv, xls, xlsx)

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

P.P.S.
Хотелось бы заметить, что здесь представлен лишь один из вожмных путей решения задачи.
Возможно вы придумаете что-то свое.

До скорых встреч!

C уважением,
Николай.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.