2011-06-27 106 views
1

我正在做的是將Tsql查詢導出到csv文件。很簡單,但是我需要能夠指定哪些字段包裹在引號「」中。我可以讓我的查詢導出包含所有feilds。將查詢導出到文本文件

"SCHEN001","Joe Bloggs Inc","1","1","1","1","1","1","13","6","Mr John Smith" 

我想出口什麼是

"SCHEN001","Joe Bloggs Inc",1,1,1,1,1,1,13,6,"Mr John Smith" 

這可能使用TSQL?

任何想法,將不勝感激

回答

1

另一種方法是使用SQL Server集成服務(如果您有MS SQL Server標準版或企業版)

,或者,你可以從那裏電網結果到Excel和CSV出口:-)複製

+0

+1對於SSIS,-0.4對於excel +複製/粘貼:) – faester

0

嘗試使用這個腳本。

將變量@TblName設置爲表的名稱。

該腳本使用information_schema.columns 獲取選定表格中每列的數據類型。

DECLARE @TblName varchar(128) 
DECLARE @WhereClause varchar(255) 

DECLARE @cmd varchar(7000) 
SET @TblName = '<YOUR TABLENAME>' --TABLENAME 
SET @cmd = '' 

create table #tableDef (id int identity (1,1), ColType int, ColName varchar(128)) 

--Fetch table information 
insert #tableDef (ColType, ColName) 
select case when DATA_TYPE like '%char%' then 1 
      when DATA_TYPE like '%datetime%' then 2 
      else 0 end , 
    COLUMN_NAME 
from information_schema.columns 
where TABLE_NAME = @TblName 
order by ORDINAL_POSITION 

SELECT @cmd = @cmd 
       + ' CASE WHEN ' + ColName + ' IS NULL ' 
       + ' THEN ''NULL'' ' 
       + ' ELSE ' 
       +  case ColType 
         when 1 then ''''''''' + ' + ColName + ' + ''''''''' 
         when 2 then ''''''''' + ' + 'CONVERT(VARCHAR(20),' + ColName + ')' + ' + '''''''''      
         else 'CONVERT(VARCHAR(20),' + ColName + ')' end 
       + ' END + '','' + ' 
     from #tableDef 
order by id 

select @cmd = 'SELECT ' + left(@cmd,len(@cmd)-8) + '+'''' FROM ' + @tblName 

exec (@cmd) 

drop table #tableDef