2011-01-05 9 views
0

ファイルがいっぱいのディレクトリがあります。それらはSQLスクリプトですが、実行したくありません。スクリプトファイルの内容をデータベースのテーブルにインポートして、後で実行する必要があります。各ファイルはテーブル内に独自の行を持ちます。複数のファイルをテーブルにインポートする

私は現在Powershellで作業していますが、サードパーティ製のソフトウェアを使用しない別の簡単な方法がある場合は、それも開かれます。

元々私はファイルをループするコードを書いていましたが、StreamReaderを使って内容を取得してから、実行するinsert文を作成しました。ファイルなどに埋め込まれた引用符で大きな問題があるかもしれないが、私は気づいた。

あなたに与えることができる任意のアドバイスありがとう!

+0

スクリプトについて詳しく教えてください –

+0

埋め込み引用符に問題があるのはなぜですか?パラメータ化されたクエリを使用できないのですか?または誤解しましたか? –

+0

@bernd_k - テキストが入っています。彼らはあまりにも大きくありません。私は他にあなたが知る必要があるか分からないが、特定の質問がある場合は、私に知らせてください。 –

答えて

2

あなたが埋め込まれた引用符を削除し、それらをへ-することのいずれかによって、あなたのロジックでString.Replace(old_str,new_str)またはTSQL REPLACEで を置き換え?などの論理セクションをマークすることができますか以下のサンプルでは <condition_string>というマーカーが表示されていますので、特に注意してください。

declare @finalQuery nvarchar(1000) 

SET @finalQuery = 
(SELECT REPLACE ((
    SELECT REPLACE ((
     SELECT REPLACE('Select <column_names> from <table_name> where 
           <condition_string>' COLLATE Latin1_General_BIN, 
     '<column_names>', 
     'ID,[name]')), 
    '<table_name>', 
    '[MyTable]')), 

'<condition_string>', 
'[name] like ''%John%''')); 

EXEC(@finalQuery); 

GO 
+0

私は$文字列をやってしまいました。他の面をテストすることもできますが、実際にはうまくいきますので、今のところそれに固執します。 –

0

通常、データベース内のファイルを使用して作業する場合は、完全な内容をインポートするのではなく、ファイルへのパスを物理ボリュームに保存するか、BLOBとして保存するか(バイナリラージオブジェクト)。後者を行う場合は、それらも圧縮することができます。

これらの手法の欠点は、SQLクエリでそれらを検索するだけでは問題はないということです。

+1

でそれらを読み込むことができますか?あなたはその質問を誤解しました。 OPは、ファイルから読み取られたSQLを表の列に格納し、後でその列の内容をSQLとして実行する必要があります。 –

+0

Kenは言うとおり、ファイルの内容をプレーンテキストで利用できるようにする必要があります。私もデータベースが完全に含まれている必要があります - 私はデータベースと一緒にスクリプトのディレクトリ、パスなどを維持することはできません –

関連する問題