2012-07-18 11 views
7

T-SQLを使用してファイルの内容をMS SQL変数に読み込む方法を教えてもらえますか?ファイルの内容をSQL変数に読み取る方法

+0

はあなたが何であるかについての詳細を説明正確にやろうとする。どんな種類のコンテンツを読み込もうとしていますか、どのようなタイプの変数ですか? tsqlを使用してフラット・ファイルの内容を表にインポートすることを意味しますか? – vmvadivel

+0

* .sqlファイルを読み込み、EXECコマンドを使用してスクリプトを実行します。 –

+0

また、 'sqlcmd'モードと[':r'スイッチ](http://blogs.msdn.com/b/patrickgallucci/archive/2007/09/03/sqlcmd-and-the-あなたがなぜこれを必要としているかに応じて、r-as-the-little-r.aspx) –

答えて

16
DECLARE @FileContents VARCHAR(MAX) 

SELECT @FileContents=BulkColumn 
FROM OPENROWSET(BULK'PathToYourFile.sql',SINGLE_BLOB) x; 

SQL Serverサービスアカウントには、ファイルを明示的に読み取るためのアクセス許可が必要です。

+0

私はあなたの方法を試しました、それは間違いなく動作します!大変ありがとうございます。 しかし、私はファイル全体を読んでいないようです。変数に完全にロードされていないか、バイナリ形式でロードされています。 ASCII形式で完全なテキストを読み込むにはどうすればよいですか? –

+0

@BabuJames - 変数が 'nvarchar'である必要があるかもしれないということが私には分かりました。また、完全にロードされていないことをどのように確立していますか? SSMSは長い変数の出力を切り捨てます。回避策については、[SSMSから完全な結果セットを取得する方法](http://stackoverflow.com/questions/8930034/how-to-get-the-full-resultset-from-ssms/8930141#8930141)を参照してください。 –

+0

まだ解決されていないにもかかわらず、あなたの提案は私が問題の詳細を把握するのに役立ちました。このシナリオは次のとおりです。同じデータベースの約10個のバックアップファイルがあります。定期的に私はそれらを最新のモデル変更と同期させる必要があります。だから、今私は各ファイルを復元し、スクリプトを実行し、バックアップする必要があります。したがって、私はこれのために何らかの自動化を考え、それぞれを1つずつ復元して操作する1つのスクリプトというアイデアを思いつきました。それ以外は問題ありませんが、ローカルに保存された.sqlファイルを実行すると問題があります。 –

2

SQLCMDを使用して.sql(コマンドプロンプトまたはSSMS内のいずれか)を実行します。あなたはSSMS以内にそれを使用したい場合は、最初のSQLCMDモード(問合せ>> SQLCMDモード)を回し

のようなものhttp://msdn.microsoft.com/en-us/library/ms174187.aspx

:r yourFilename 

をチェックアウト:

:r d:\scripts\sample.sql 
関連する問題