Использование пакетных файлов и задач

Использование пакетных файлов и задач

Рассмотрим задачу автоматизации:

  • Загрузите 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.

Этот веб-сайт использует куки. Продолжая использовать веб-сайт, Вы принимаете условия Политики защиты персональных данных.