如何写一个处理SQL语句

问题描述:

如何写一个批处理脚本,将采取一个文件作为输入的批处理文件,则它将在该文件中的SQL查询,并给出一个文件作为输出。如何写一个处理SQL语句

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

+0

具体是,这个文件是CSV格式吗?也请重新说明您的问题标题 - 它太过于通用。 – SpliFF 2011-02-04 07:26:17

+0

你已经提出了另一个更详细的问题,并指出了这一点。我建议你简单地关闭这个太模糊,专注于你的另一个是好多了:http://*.com/questions/4895725/batch-file-which-will-take-a-text-file- as-an-input – paxdiablo 2011-02-04 08:28:48

+0

我在上面的问题中添加了对答案的回复,并稍微改写了标题。 – wimh 2011-02-05 10:06:59

你不经常在一个正常的文件执行SQL查询,它通常需要在另一端的DBMS(数据库管理系统)用于解释SQL和提取相关数据。

编写批处理文件相对容易,无论是UNIX shell如bash还是Windows cmd.exe。但是,如果你想要实现一个对文本文件(或任何非数据库文件,真的)进行操作的全面的SQL查询语言,那么堆栈溢出可能会带来更多的问题:-)

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

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

你不指定要使用的SQL Server,在这个例子中,我将使用火鸟。如果您使用不同的SQL Server,则必须使用正确的sql命令行工具和语法。 firebird使用isql.exe。

Asuming我有以下文本文件“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命令的输出。