Batch file 如何编写处理sql语句的批处理文件

Batch file 如何编写处理sql语句的批处理文件,batch-file,Batch File,如何编写一个批处理脚本,将一个文件作为输入,然后它将对该文件执行sql查询,并将一个文件作为输出 输入将是一个文本文件,其中包含4个查询。现在要编写一个批处理文件,该文件一次执行一个查询,输出将存储在一个文件中。因此,4个查询将有4个独立的输出文件您通常不会对普通文件执行SQL查询,它通常需要另一端的DBMS(数据库管理系统)来解释SQL并提取相关数据 编写批处理文件相对容易,无论是像bash这样的UNIX shell还是Windowscmd.exe 但是,如果您正在考虑实现一种对文本文件(或者

如何编写一个批处理脚本,将一个文件作为输入,然后它将对该文件执行sql查询,并将一个文件作为输出


输入将是一个文本文件,其中包含4个查询。现在要编写一个批处理文件,该文件一次执行一个查询,输出将存储在一个文件中。因此,4个查询将有4个独立的输出文件

您通常不会对普通文件执行SQL查询,它通常需要另一端的DBMS(数据库管理系统)来解释SQL并提取相关数据

编写批处理文件相对容易,无论是像
bash
这样的UNIX shell还是Windows
cmd.exe

但是,如果您正在考虑实现一种对文本文件(或者任何非数据库文件)进行操作的全面SQL查询语言,那么可能需要回答不止一个关于堆栈溢出的问题:-)


考虑到我们可能误解了您的要求,也许您可以更详细地充实一下您的问题。

我想您需要的是。它允许您对多种文件类型执行SQL查询,包括日志、CSV和XML文件。

您没有指定要使用的SQL server,在本例中,我将使用firebird。如果使用不同的sql server,则必须使用正确的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命令的输出。

请具体说明,此文件是否为CSV格式?另外,请重新表述你的问题标题——太笼统了。你问了另一个问题,这个问题的细节要详细得多,而且切中要害。我建议你简单地把这封信收起来,因为它太模糊了,而把注意力集中在你的另一封信上,这封信要好得多:我把你对上述问题答案的回答也加了进去,并把标题改了一点。任务是使这一过程自动化。因此,我必须编写一个批处理脚本来解析这个文件,输入将是附加的文件,我最终需要的只是一行中的sql查询,输出应该在文件中。每个输入文件将有一个4 Sql查询。所以每个sql查询都需要换行。@sudeep:那么您需要编写一个sql解释器和提取引擎,它将处理您尚未附加的文件,并将提取的数据写入文件?如果是这样的话,我想你还没有完全理解你提议的复杂性。输入将是一个包含4个查询的文本文件。现在要编写一个批处理文件,该文件一次执行一个查询,输出将存储在一个文件中。因此,4个查询将有4个单独的输出文件。那么,在批处理文件中写入什么,以便它将文本文件作为输入?@sudeep,请参阅我对您的另一个问题的回答:输入将是一个文本文件,其中包含4个查询。现在要编写一个批处理文件,该文件一次执行一个查询,输出将存储在一个文件中。因此,4个查询将有4个单独的输出文件