Использование пакетных файлов и задач
Рассмотрим задачу автоматизации:
- Загрузите 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
Использование пакетных файлов
Вот простой пакетный файл для получения данных для тикеров из файла symbols.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.gsqlcmd.com https://www.gsqlcmd.com/buy.htm
И используйте команду:
gsqlcmd download @urls.txt *.* /echoUrl
Для режима download требуются два позиционных параметра.
В этом примере gsqlcmd считывает первый параметр из файла задач и использует второй параметр из командной строки.
Вы также можете поместить URL-адреса и выходные файлы в один файл:
https://www.gsqlcmd.com index.htm https://www.gsqlcmd.com/buy.htm buy.htm
И использовать команду с единственным файлом задач:
gsqlcmd download @urls.txt /echoUrl
Эти файлы задач не содержат заголовков.
Таким образом, gsqlcmd использует первое значение как первый параметр и второе значение как второй параметр.
Вы можете создавать файлы задач с заголовками.
Например:
URL FileName https://www.gsqlcmd.com index.htm https://www.gsqlcmd.com/buy.htm buy.htm
Используйте URL, FileName и OutputFileName для определения значений позиционных параметров в соответствии с режимом работы.
Также можно добавить дополнительные столбцы для значений опции /set.