2011-10-17 17 views
0

多くの場合、このようなタスクがあります。必ずしも単純ではありませんが、一般的には文字列のリスト - >対応するSQL文のリストです。スクリプトツールを使用してSQL文を作成する自動化

いつものソリューションは、INSERT文

=concatenate("insert into users values(username .......'",A1,"'..... 

の負荷を生成し、その後、私はすべての挿入行を取得するための式を下に埋めるための式を使用し、Excelでユーザ名のリストでこれです。

これは動作しますが、時にはステートメントが長く、時にはそれぞれにいくつかの異なるステップが含まれており、すべてをExcel式に詰め込み、すべてのラッピング引用符を正しく取得するのは苦痛です。

もっと良い方法があるのでしょうか?

insert into users 
    ([username], 
      [company] ... 



     ) 
    values('<template tag1>... 

、その後、単に

command_line> make_big_file_using_template template.txt /values [username1 username2] 
/output: bigfile.txt 

ようなものを入力することができるように、いくつかの魔法のコマンドラインツールを使用して、これが与える:私が本当に欲しいのは、テンプレートファイルのテンプレートTXTを持つことができるようにすることです私は、テンプレートを持つ大きなファイルを、各ユーザー名の値とタグをユーザー名で置き換えて繰り返しました。

このようなコマンドが存在するのですか、またはコマンドラインツールの期待が高すぎますか?任意の自由に利用可能なWindowsツールが行います。私はあまり時間をかけずにこれを行うためにC#プログラムを叩くことができましたが、既にそこに使いやすいツールがなければならないと感じています。

+0

ここで 'template.txt'はどこに来ますか?オム?データベース?何のRDBMSを使用していますか?多くの場合、フォームテキストファイルを読むことができる 'INSERT'コマンドがあります。 –

+0

私はそれを書きました。質問はDB型とは無関係ですが、実際にはこれは他の(非SQL)型のコードを生成するために時々問題となるものです。 –

+0

インポートするデータに作用するストアドプロシージャを持つだけでなく、SQLをこのように生成するのはなぜですか? – Sorpigal

答えて

1

これは、Powershellスクリプトを使用して簡単です。 PSは、文字列のインライン変数を可能にするので、あなたのような何かを行うことができます:

$Tag1 = 'blah' 
$Tag2 = 'foo' 

$SQLHS = @" 
INSERT INTO users 
([username], 
[company],...) 
VALUES 
('$tag1', '$tag2'...) 
"@ 

set-content 'C:\Mynewfile.txt' -value $SQLHS 

@"...."@は、それは非常に簡単に引用符と、そのようなエスケープせずに読みやすいコードを書くことができた、here-stringです。

上記は、さまざまなタグと出力ファイルのパラメータを受け入れるか、別の.txtファイルまたは.csvファイルにある値のセットを入力として実行するように簡単に変更できます。

EDIT:

param($outfile, $tab1, $tab2, $tab3)

は、次にあなたのスクリプトでこれらの$変数を使用します。

は、あなただけの上部にparam()ブロックを追加することができ、パラメータを受け入れるためにそれを変更するには

set-content "$outfile" -value $SQLHS

+0

は私が欲しかったもののように見えますが、値のリストを取り出して大きなファイルに出力するにはどうしたらいいですか? –

+0

@JonnyCundall - 編集を参照してください – JNK

関連する問題