2017-08-23 4 views
0

テーブルがありますタブ多くの列と行があります。
すべての列名は同じかなっテーブル行のデータをexternファイルにプッシュ

set @col_names = 'col_a,col_b,col_c' 

、カンマで区切っnvarchar型の変数に格納し、今私は、外部ファイルにこのテーブルからすべての行をプッシュする。さ私が持っている問題がある

set @cmd = 'echo '+' some text >>'+ @my_file_path; 
EXEC master..xp_cmdshell @cmd; 

を使用してこれを行うには :例えばだから、

val_a,val_b,val_c 

の行のコンテンツを格納する方法は次のように変数を@cmd タブコンテンツがある場合:

col_a | col_b | col_c 
------+-------+------- 
1a | 1b | 1c 
2a | 2b | 2c 
3a | 3b | 3c 

私のexternファイル内にテキストがあります。

(1a,1b,1c), 
(2a,2b,2c), 
(3a,3b,3c), 

最後に、私はexternファイルが実行可能なSQLコードでなければなりません。..

答えて

0

ハックのビット、おそらくこれは

Declare @col_name varchar(max) = 'col_a,col_b,col_c' 
Declare @data  varchar(max) 

Create Table #Temp (X varchar(max)) 

Declare @SQL varchar(max) = ' 
Insert Into #Temp 
Select stuff(replace((Select concat('','',char(13),''('','+replace(@col_name,',',','','',')+','')'') 
         From Tab 
         For XML Path ('''')),''
'',char(13)),1,2,'''') 
' 
Exec(@SQL) 

Select @data = X from #Temp 

は、文字列を返し役立ちますchr(13)...オプションで

(1a,1b,1c), 
(2a,2b,2c), 
(3a,3b,3c) 
0

ここで読むことができるように:https://docs.microsoft.com/en-us/sql/relational-databases/import-export/bulk-import-and-export-of-data-sql-server、データをプログラムでエクスポートする唯一のユーティリティはbcpです。

代替手段(私が毎日使用している)は、Sql Server Assemblyを作成することです。

  • クエリーコマンドと
  • 出力文字列:あなたは、2つのパラメータを受け取るCLRストアドプロシージャを作成することができます。実際に

、私はなど、メールでそれらを添付し、ファイルへの書き込みデータのためのCLRストアドプロシージャを持っている、またはFTPでそれらを送信、Webサービスを呼び出すのTransact SQL :(

で不足しているすべての機能のために
関連する問題