我要做的是将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吗?
非常感谢任何想法
答案 0 :(得分:1)
查看bcp.exe
实用程序。它适用于批量操作,您可以指定导出模板等。
答案 1 :(得分:1)
另一种方法是使用SQL Server Integration Services(如果您有MS SQL Server Standard或Enterprise Edition)
或者,您可以将网格结果复制到Excel中,然后从那里导出CSV: - )
答案 2 :(得分: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