Использование пакетных файлов и задач
К примеру, следует автоматизировать следующую задачу:
- Загрузите 1-минутные цены акций с Yahoo Finance для списка тикеров.
Основной URL-адрес выглядит следующим образом:
https://query1.finance.yahoo.com/v7/finance/chart/AAPL?range=1d&interval=1m&indicators=quote&includeTimestamps=true
Файл symbols.txt содержит список тикеров:
AAPL FB GOOGL
Использование пакетных файлов
Ниже приведен простой пакетный файл для получения данных для списка тикеров из файла tickers.txt:
@echo off for /F %%i in (symbols.txt) do ( gsqlcmd convert "https://query1.finance.yahoo.com/v7/finance/chart/%%i?range=1d&interval=1m&indicators=quote&includeTimestamps=true" ^ %%i.csv /add=Symbol=%%i ^ /datetimeformat=yyyy-MM-dd /echoUrl gsqlcmd sleep 300 )
Используйте режим sleep для задержки между запросами, чтобы предотвратить блокировку IP веб-серверами.
Пакетный файл загружает три файла: AAPL.CSV, FB.CSV и GOOGL.CSV.
Вы можете изменить пакетный файл, чтобы загружать данные в один выходной файл:
@echo off if exist data.csv del data.csv for /F %%i in (symbols.txt) do ( gsqlcmd convert "https://query1.finance.yahoo.com/v7/finance/chart/%%i?range=1d&interval=1m&indicators=quote&includeTimestamps=true" ^ data.csv /append /add=Symbol=%%i ^ /datetimeformat=yyyy-MM-dd /echoUrl gsqlcmd sleep 300 )
Сначала удалите выходной файл и используйте опцию /append для добавления данных.
Использование файлов задач с опцией /TaskFile
Опция /taskFile позволяет решать такие типичные задачи с помощью одной команды.
Добавим имя столбца в symbols.txt:
Symbol AAPL FB GOOGL
Команда gsqlcmd будет использовать параметр {symbol} вместо переменной %%i:
@echo off gsqlcmd convert "https://query1.finance.yahoo.com/v7/finance/chart/{symbol}?range=1d&interval=1m&indicators=quote&includeTimestamps=true" ^ data.csv /add=Symbol={symbol} ^ /datetimeformat=yyyy-MM-dd /echoUrl ^ /delay=300 /taskFile=symbols.txt
Кроме того, команда содержит файл задач в опции /taskFile, опцию /delay вместо режима sleep, и не содержит опцию /append.
gsqlcmd Enterprise позволяет получать значения задач из базы данных, используя форму <connection>::<query>.
Например, файл symbols.txt можно заменить на запрос SELECT:
@echo off gsqlcmd convert "https://query1.finance.yahoo.com/v7/finance/chart/{symbol}?range=1d&interval=1m&indicators=quote&includeTimestamps=true" ^ data.csv /add=Symbol={symbol} ^ /datetimeformat=yyyy-MM-dd /echoUrl ^ /delay=300 "/taskfile=db::SELECT Symbol FROM dbo.symbols"
Использование файлов заданий для позиционных параметров
Вы можете использовать файлы задач вместо позиционных параметров.
Например, вы можете поместить URL-адреса в такой файл, как urls.txt:
https://www.savetodb.com https://www.savetodb.com/buy.htm
и используйте команду:
gsqlcmd download @urls.txt *.* /echoUrl
Для режима download требуются два позиционных параметра.
В этом примере gsqlcmd считывает первый параметр из файла задач и использует второй параметр из командной строки.
Вы можете поместить URL-адреса и выходные файлы в файл:
https://www.savetodb.com index.htm https://www.savetodb.com/buy.htm buy.htm
и использовать команду с единственным файлом задач:
gsqlcmd download @urls.txt /echoUrl
Приведенные выше файлы задач не содержат заголовков.
Таким образом, gsqlcmd использует первое значение в качестве первого параметра и второе значение в качестве второго параметра.
Вы можете создавать файлы задач с заголовками.
Например:
URL FileName https://www.savetodb.com index.htm https://www.savetodb.com/buy.htm buy.htm
Используйте URL, FileName и OutputFileName для определения значений позиционных параметров в соответствии с режимом работы.
Вы также можете добавить дополнительные столбцы, используемые в качестве значений опции /set.