Как включить переменные окружения в запрос SQLite3 - PullRequest
0 голосов
/ 22 января 2020

Я работаю над написанием командного файла для извлечения данных из нескольких баз данных SQLite3. Мне нужно установить 2 системные переменные среды, а затем использовать их две переменные среды в моем операторе SELECT. Поскольку это будет работать с несколькими базами данных, которые имеют одну и ту же схему, но для разных местоположений сайта. На данный момент 14 разных локаций. До сих пор я придумал мой основной файл queryrun.bat:

@echo off
setx /m DateStart '20200101'
setx /m DateEnd '20200103'
sqlite3 SiteID40.db < query40.dat
TIMEOUT /t 3
sqlite3 SiteID41.db < query41.dat

Тогда файлы запроса # .dat выглядят так:

.mode list
.separator ,
.output results40.csv
SELECT * FROM FilesActive WHERE CompactDate >= %DateStart% and CompactDate <= %DateEnd%;
.quit

% DateStart% и В% DateEnd% я хочу вставить системные переменные с тем же именем. Я попытался использовать $ DateStart и% DateStart%, но безуспешно.

Любая конструктивная помощь приветствуется. Я должен RE-ITERATE хотя это SQLite3 НЕ MS SQL Сервер или mySQL.

1 Ответ

1 голос
/ 23 января 2020

Используя команду .param в sqlite, должно сработать что-то вроде этого:

Измените вызов .bat с sqlite3 SiteID40.db < query40.dat на

sqlite3 SiteID40.db ".param set :DateStart %DateStart%" ".param set :DateEnd %DateEnd%" ".read query.dat"

Измените Файл запроса # .dat ВЫБИРАЕТ на:

SELECT * FROM FilesActive WHERE CompactDate >= :DateStart and CompactDate <= :DateEnd;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...