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

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

К примеру, следует автоматизировать следующую задачу:

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