2017-08-23 54 views
0

我有一個表格表格有很多列和行。
所有列名稱都存儲在逗號分隔nvarchar的變量,某事像將表格行中的數據推送到外部文件

set @col_names = 'col_a,col_b,col_c' 

,現在我想從該表中的所有推行外部文件。 要做到這一點,我使用

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

這個問題我已經是:如何存儲行內容@cmd變量,如:

val_a,val_b,val_c 

因此,例如:如果標籤內容是:

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 

返回一個字符串with 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服務等爲所有缺失的功能在處理SQL :(

相關問題