2011-02-04 6 views
1

ファイルを入力とするバッチスクリプトの記述方法は、そのファイルに対してSQLクエリを実行し、出力としてファイルを指定します。SQL文を処理するバッチファイルを作成する方法

入力は4つのクエリを含むテキストファイルになります。これでバッチファイルが作成され、一度に1つのクエリが実行され、実行され、出力がファイルに格納されます。したがって、4つのクエリ用に4つの出力ファイルがあります

+0

このファイルはCSV形式ですか?また、あなたの質問のタイトルを言い換えてください - それはあまりにも一般的です。 – SpliFF

+0

あなたはもう少し詳しく質問して、別の質問をしました。私はあなたが単にあまりにも漠然としたものとしてこの1つを閉じて、あなたの他のものに集中することをお勧めします:http://stackoverflow.com/questions/4895725/batch-file-which-will-take-a-text-file-入力として – paxdiablo

+0

私は上記の質問にも回答にあなたの返答を加えて、少し言い直しました。 – wimh

答えて

0

通常のファイルに対しては頻繁にSQLクエリを実行しません。一般に、SQLを解釈して適切なものを抽出するには、DBMS(データベース管理システム)データ。

バッチファイルの作成は比較的簡単です。bashやWindows cmd.exeなどのUNIXシェルでもかまいません。

しかし、テキストファイル(またはデータベース以外のファイル)で動作する完全なSQLクエリ言語を実装しようと思っているのであれば、おそらくStack Overflowに関する質問が1つ多くなります:-)

おそらく、私たちがあなたの要件を誤解している可能性があるということを考えれば、もう少し詳しく質問を洗い出すことができます。

+0

タスクはプロセスを自動化することです。だから、このファイルを解析するためのバッチスクリプトを書く必要があります。入力は添付ファイルになります。私が最終的に必要とするのはSQLクエリだけです。各入力ファイルには4つのSQLクエリがあります。したがって、各SQLクエリは新しい行にある必要があります。 – sudeep

+0

@sudeep:あなたが求めているのは、SQLインタープリタと抽出エンジンです。あなたが添付したファイルを処理し、抽出されたデータをファイルに書き出しますか?そうだとすれば、私があなたが提案しているものの複雑さを完全に理解しているとは思えません。 – paxdiablo

+0

入力は4つのクエリを含むテキストファイルになります。これでバッチファイルが作成され、一度に1つのクエリが実行され、実行され、出力がファイルに格納されます。だから、4つのクエリ – sudeep

0

あなたが探しているものはMicrosoft Log Parser 2.2だと思います。これにより、ログ、CSV、XMLファイルなど、さまざまな種類のファイルに対してSQLクエリを実行できます。

+0

は4つのクエリーを含むテキストファイルになります。これでバッチファイルが作成され、一度に1つのクエリが実行され、実行され、出力がファイルに格納されます。したがって、4つのクエリ用に4つの別個の出力ファイルがあります – sudeep

2

使用しているSQLサーバを指定していません。この例では、firebirdを使用します。別のSQL Serverを使用する場合は、正しいsqlコマンドラインツールと構文を使用する必要があります。 firebirdはisql.exeを使用します。私は4つのSQLコマンドを含む次のテキストファイル「input.sql」を持っている

Asuming:

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が作成されます。各ファイルには、1つのsqlコマンドの出力が含まれています。

関連する問題