Экспорт запроса в текстовый файл - PullRequest
1 голос
/ 27 июня 2011

Что я пытаюсь сделать, это экспортировать запрос Tsql в файл CSV.Достаточно просто, однако мне нужно иметь возможность указать, какие поля заключены в кавычки "".Я могу получить свой запрос на экспорт со всеми полями, обернутыми.

"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?

Любые идеи будут высоко оценены

Ответы [ 3 ]

1 голос
/ 27 июня 2011

Другой подход заключается в использовании SQL Server Integration Services (если у вас MS SQL Server Standard или Enterprise edition)

или, альтернативно, вы можете скопировать результаты сетки в Excel и экспортировать CSV оттуда :-)

1 голос
/ 27 июня 2011

Посмотрите на утилиту bcp.exe.Он предназначен для массовых операций, и вы можете указать шаблоны для экспорта и т. Д.

Ссылка, которая кажется разумной: http://www.simple -talk.com / sql / database-Administration / creation-csv-files-используя-BCP-и-предоплаченных процедур /

0 голосов
/ 27 июня 2011

Попробуйте использовать этот скрипт.

Установите для переменной @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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...