Как написать пакетный файл, который обрабатывает операторы SQL - PullRequest
1 голос
/ 04 февраля 2011

как написать пакетный скрипт, который будет принимать файл в качестве входных данных, затем он выполнит SQL-запрос к этому файлу и выдаст файл в качестве выходного.запрос в нем.Теперь необходимо написать командный файл, который будет принимать по 1 запросу за раз, и результат будет сохранен в файле.Таким образом, будет 4 отдельных выходных файла для 4 запросов

Ответы [ 3 ]

2 голосов
/ 05 февраля 2011

Вы не указываете, какой сервер sql вы используете, в этом примере я буду использовать Firebird.Если вы используете другой сервер SQL, вы должны использовать правильный инструмент командной строки SQL и синтаксис.firebird использует isql.exe.

Предполагается, что у меня есть следующий текстовый файл "input.sql", содержащий 4 команды sql:

select * from CUSTOMER;
select * from DEPARTMENT;
select * from EMPLOYEE;
select * from SALES;

Затем этот пакетный файл выполнит каждую команду, используя isql.exeи создает отдельный выходной файл для каждой команды:

@echo off

set sql_exe="C:\Program Files\Firebird\Firebird_2_5\bin\isql.exe"
set sql_options=-u sysdba -p masterkey
set sql_db="C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB"
set count=1

for /f "delims=" %%a in (input.sql) do (
  echo %%a > temp.sql
  call :processtemp_sql
)
goto :eof


:processtemp_sql
%sql_exe% %sql_options% -i temp.sql -o output%count%.txt %sql_db%
set /A count=%count%+1
goto :eof


:eof

в конце создаются output1.txt..output4.txt.Каждый файл содержит выходные данные одной команды sql.

0 голосов
/ 04 февраля 2011

Я думаю, что вы ищете Microsoft Log Parser 2.2 .Он позволяет выполнять запросы SQL для нескольких типов файлов, включая журналы, файлы CSV и XML.

0 голосов
/ 04 февраля 2011

Вы не часто выполняете запросы SQL для обычного файла, для интерпретации SQL и извлечения соответствующих данных обычно требуется СУБД (система управления базами данных) на другом конце.

Запись пакетного файлаэто относительно просто, будь то оболочка UNIX, такая как bash или Windows cmd.exe.

Но, если вы думаете о реализации полноценного языка запросов SQL, который работает с текстовыми файлами (или с любыми другимифайл базы данных, на самом деле), вероятно, потребуется больше, чем один вопрос о переполнении стека: -)

Возможно, вы могли бы конкретизировать свой вопрос чуть более подробно, учитывая, что мы могли неправильно понять ваши требования.

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