2016-04-15 11 views
0

私はMSSQL 2008を使用していますが(私は2014にもアクセスできますが)。テキストファイルのデータからテーブルを作成するスクリプトを作成しようとしています。これは、ファイル名をハードコードするとうまくいきます。TSQLプログラムファイル環境変数を使用する一括挿入

BULK INSERT mytable 
FROM 'c:\Program Files\MyDirStructure\foo.dat' 

ただし、代わりに%programfiles%環境変数を使用します。私はそれを直接入れてみましたが、もちろんそれは文字列なので動作しません。だから私は[]で%記号をエスケープしようとしましたが、やはりどちらもうまくいくとは思っていませんでした。

私は$(ProgramFiles)構文を使用して変数へのパスを構築しようとしましたが、その構文が不明です。さらに、FROMキーワードの後に​​変数を押し込むだけではいけません。

私はここで何かが分かりませんか?

+1

動的SQLを使用して、insertコマンドを文字列として作成し、コマンドを実行することができます。 – Chuck

答えて

0

クエリ実行オプションの下で「既定では、新しいクエリをSQLCMDモードで開く」を有効にする必要があることがわかりませんでした。私がそれをしたら、私はそれを理解することができました。

DECLARE @folder_path NVARCHAR(255) = '$(ProgramW6432)' + '\my_path\' 
SET @sql = 'BULK INSERT dbo.mytable 
FROM ''' + @folder_path + 'foo.dat''' 
EXEC sys.sp_executesql @stmt = @sql 

セキュリティの影響がどのようなものかはっきりとは分かりませんが、ここでは他の回答があると確信しています。

関連する問題