sql每2行输出一个txt文本的有关问题
sql每2行输出一个txt文本的问题
请问各路大神,如果想每2行创建一个txt,需要把分组(2行为1分组)中第1行的时间当做文件名,我想到把queryout d:\123\778899.txt 这里改成 queryout d:\123\'+ cast(@时间 as varchar(20)) + '.txt‘
或者改成'queryout d:\123\'+ wangning868hexun.dbo.和讯博客3.时间 + '.txt'怎么都不行的啊?
【温馨提示:如果要测试,请建立数据库:wangning868hexun和表:和讯博客3 字段:时间、内容即可测试。】
------解决思路----------------------
每个文件 2条记录,多个文件夹,你参考看一下。 你那数据为表什么的创建就不弄了。
declare @num int
declare @sqlstr varchar( 3000)
set @num =0
WHILE @num <=30
begin
set @sqlstr ='BCP "select top 2 * from testdb.dbo.NumList where number not in (select top '+CAST(@num as varchar)+' number from testdb.dbo.NumList)" queryout d:\a\t'+CAST(@num as varchar)+'.txt -c -T'
exec master .dbo. xp_cmdshell @sqlstr
set @num =@num+ 2
END
------解决思路----------------------
这个位置加一下排序应该是可以的吧。
我测试的时候,一开始没有排序,第一个文件 里是0,1,第二个文件里是2,3,以后文件 以此类推。
排一下序,倒着来,就变成 第一个文件 里是2048,2047,第二个文件里是2046,2045,以后文件 以此类推。
use wangning868hexun
declare @num int
declare @sqlstr varchar( 3000)
set @num =0
WHILE @num <=30
begin
set @sqlstr ='bcp "SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY [时间]) AS RowIndex FROM wangning868hexun.dbo.和讯博客3 ) TableIndex WHERE TableIndex.RowIndex BETWEEN '+cast( @num + 1 as varchar(10 ))+' AND '+ cast(@num +2 as varchar (10))+ ' " queryout d:\123\778899.txt -c -T'
exec master .dbo. xp_cmdshell @sqlstr
set @num =@num+ 2
END
请问各路大神,如果想每2行创建一个txt,需要把分组(2行为1分组)中第1行的时间当做文件名,我想到把queryout d:\123\778899.txt 这里改成 queryout d:\123\'+ cast(@时间 as varchar(20)) + '.txt‘
或者改成'queryout d:\123\'+ wangning868hexun.dbo.和讯博客3.时间 + '.txt'怎么都不行的啊?
【温馨提示:如果要测试,请建立数据库:wangning868hexun和表:和讯博客3 字段:时间、内容即可测试。】
------解决思路----------------------
每个文件 2条记录,多个文件夹,你参考看一下。 你那数据为表什么的创建就不弄了。
declare @num int
declare @sqlstr varchar( 3000)
set @num =0
WHILE @num <=30
begin
set @sqlstr ='BCP "select top 2 * from testdb.dbo.NumList where number not in (select top '+CAST(@num as varchar)+' number from testdb.dbo.NumList)" queryout d:\a\t'+CAST(@num as varchar)+'.txt -c -T'
exec master .dbo. xp_cmdshell @sqlstr
set @num =@num+ 2
END
------解决思路----------------------
declare @num int
declare @sqlstr varchar( 3000)
set @num =0
WHILE @num <=30
begin
set @sqlstr ='BCP "select top 2 * from testdb.dbo.NumList where number not in (select top '+CAST(@num as varchar)+' number from testdb.dbo.NumList) order by number desc" queryout d:\a\t'+CAST(@num as varchar)+'.txt -c -T'
exec master .dbo. xp_cmdshell @sqlstr
set @num =@num+ 2
END
这个位置加一下排序应该是可以的吧。
我测试的时候,一开始没有排序,第一个文件 里是0,1,第二个文件里是2,3,以后文件 以此类推。
排一下序,倒着来,就变成 第一个文件 里是2048,2047,第二个文件里是2046,2045,以后文件 以此类推。