2011-06-27 7 views
1

Ce que j'essaie de faire est d'exporter une requête Tsql dans un fichier csv. Assez simple, cependant, je dois être en mesure de spécifier quels champs sont placés entre guillemets "". Je peux obtenir ma requête à exporter avec toutes les polices enveloppées.Exporter la requête vers le fichier texte

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

Ce que je voudrais exporter est

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

Est-ce possible en utilisant Tsql?

Toutes les idées seraient grandement appréciés

Répondre

1

Une autre approche consiste à utiliser SQL Server Integration Services (si vous avez édition standard MS SQL Server ou Enterprise)

ou, alternativement, vous pouvez copier les résultats de la grille dans Excel, CSV et d'exportation à partir de là :-)

+0

+1 pour SSIS, -0,4 pour Excel + copier/coller :) – faester

0

Essayez d'utiliser ce script.

Définissez la variable @TblName sur le nom de votre table.

Le script utilise information_schema.columns pour obtenir les types de données pour chaque colonne de la table sélectionnée.

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 
Questions connexes