sql server 如何按照一个字段的不同值 批量导出多个txt

比如有一个表 table1,有列 name,age,class,sex。。。。等等。
如class中有很多值,如一年一班,一年2班。。。。。
把所有class=一年一班的所有行导出为1个txt文件,二年二班的为一个导出为1个txt文件,以此类推。。。。。

另外每个班可能有数万行,总共可能有数百万行。。。求个能批量导出的方法,跪求。。。谢谢了,能解决这个的话,下次我就不用花3小时来导数据了。
难道没人知道? 我去。。。跪求啊!!!

我遇到这种问题用程序解决
先查询有多少个字段值,然后循环拼写SQl语句查询导出

你如果不写程序,可以先导出所有字段值,可能有几十个或上百个,没关系,在excel很好弄
然后用下面的存储过程,格式刷上场,刷出对应的几十条语句,批量执行就好了,也很快
存储过程是我在网上找的,你试试

create proc 导出xls文件
@服务器名 varchar(255),
@库名 varchar(255),
@表名 varchar(255),
@用户名 varchar(100),
@密码 varchar(100),
@路径及文件名 varchar(255)
as
declare @temp1 nvarchar(4000),@temp2 varchar(8000)

set @temp1='select @value1='''',@value2='''' ;

select @value1=@value1+'',''''''+a.name+char(39),@value2=@value2+'',cast(''+a.name+'' as varchar(200))'' from '+@库名+'..syscolumns a,'+@库名+'..sysobjects d where a.id=d.id and d.name='''+@表名+''''

exec sp_executesql @temp1,N'@value1 nvarchar(4000) output , @value2 varchar(8000) output',@temp1 output,@temp2 output

select @temp1=right(@temp1,len(@temp1)-1),@temp2=right(@temp2,len(@temp2)-1)

set @temp2='bcp "select '+@temp1+' union all SELECT '+@temp2+' FROM '+@库名+'..'+@表名+'" queryout '+@路径及文件名+' -c -S'+@服务器名+' -U'+@用户名+' -P'+@密码

--print @temp2
EXEC master..xp_cmdshell @temp2
go

exec 导出xls文件 '服务器名','库名','表名','sa','密码','c:\文件.xls'

go
drop proc 导出xls文件
go
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-16
按照class的不同值(估计最多有几十个吧),分别创建视图,然后导出视图。
举例:对于“一年一班”的数据,
create view V_student_1_1 as select * from table1 where class='一年一班'
bcp 数据库名..V_student_1_1 out 1_1.txt ......

可以编个批处理实现许多班级的数据导出,也就是一组bcp命令。
相似回答