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