如何写一个处理SQL语句
问题描述:
如何写一个批处理脚本,将采取一个文件作为输入的批处理文件,则它将在该文件中的SQL查询,并给出一个文件作为输出。如何写一个处理SQL语句
输入将其在它4查询文本文件。现在将编写一个批处理文件,它将一次处理一个查询并执行它,并将输出存储在一个文件中。于是就有4单独的输出文件4查询
答
你不经常在一个正常的文件执行SQL查询,它通常需要在另一端的DBMS(数据库管理系统)用于解释SQL和提取相关数据。
编写批处理文件相对容易,无论是UNIX shell如bash
还是Windows cmd.exe
。但是,如果你想要实现一个对文本文件(或任何非数据库文件,真的)进行操作的全面的SQL查询语言,那么堆栈溢出可能会带来更多的问题:-)
也许你可以考虑到我们可能误解了你的要求,充实你的问题有更详细一点。
答
你不指定要使用的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命令的输出。
具体是,这个文件是CSV格式吗?也请重新说明您的问题标题 - 它太过于通用。 – SpliFF 2011-02-04 07:26:17
你已经提出了另一个更详细的问题,并指出了这一点。我建议你简单地关闭这个太模糊,专注于你的另一个是好多了:http://*.com/questions/4895725/batch-file-which-will-take-a-text-file- as-an-input – paxdiablo 2011-02-04 08:28:48
我在上面的问题中添加了对答案的回复,并稍微改写了标题。 – wimh 2011-02-05 10:06:59