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

时间:2011-02-04 07:14:55

标签: batch-file

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

输入将是一个文本文件,其中有4个查询。现在要编写一个批处理文件,一次执行1个查询并执行它,输出将存储在一个文件中。所以4个查询将有4个单独的输出文件

3 个答案:

答案 0 :(得分:2)

您没有指定您使用的是哪个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命令的输出。

答案 1 :(得分:0)

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

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

但是,如果你正在考虑实现一个对文本文件(或任何非数据库文件)进行操作的完整SQL查询语言,那么可能会在Stack Overflow上采取一个以上的问题: - )< / p>

考虑到我们可能误解了你的要求,也许你可以用更多的细节来充实你的问题。

答案 2 :(得分:0)

我认为你要找的是Microsoft Log Parser 2.2。它允许您对许多文件类型执行SQL查询,包括日志,CSV和XML文件。