如何在sql server中创建文本文件
问题描述:
我有一个sql server的问题。我想在sql server中运行一个命令691次(对于每个VID)。如何在sql server中创建文本文件
但是VID列的值不是Sequential和Ascending。所以我怎么能运行这个命令。
我的意思是我想为每个VID运行这个命令,它的值是691,最小值是11,最大值是7668.然后我想保存每个VID的结果在文本文件中。
的命令是:
declare @vid integer
DECLARE @FileName varchar(8000)
declare @bcpCommand varchar(8000)
set @vid = 1
while (@vid < 692)
begin
SET @FileName = 'd:\re'+ CONVERT(char(8),@vid)+'.txt'
SET @bcpCommand = 'bcp "select ak_from,ak_to,w from [socialdb].[dbo].final where ???? " queryout "'+ @FileName + '" -C -T -c -S SONY-VAIO\SQLEXPRESS1'
EXEC master..xp_cmdshell @bcpCommand
set @vid = (@vid + 1)
end
我想与SQL Server 2008的第一个记录是我的表记录一个做到这一点。
我应该根据vid分类记录,并且每个具有相同vid的记录必须在一个seprat txt文件中。
对于保存在文本文件我使用bcp。我没有问题。我的问题是与SQL服务器中的查询做到这一点。正如我所说的,第一个记录保存在表中,其名称是最终的。 如何为此编写查询?
答
为此写入查询需要以某种可查询格式(例如数据库中的表)来存储数据。一旦你有了,你可以很容易地编写一个查询,选择你正在寻找的列(ak_from,ak_to,w),并通过bcp(请参阅:Using bcp utility to export SQL queries to a text file和http://msdn.microsoft.com/en-us/library/ms162802.aspx)将结果放入文本文件中。
假设您将拥有多于5条记录和3个VID,您可以在光标内编写bcp,以便根据您的条件循环并创建多个文本文件。
为了举例,下面的代码只是将5条记录放入临时表中,然后输出三个文本文件中的每一个。
CREATE TABLE ##tbl
(
Vid INT NOT NULL
,ak_from INT NOT NULL
,ak_to INT NOT NULL
,w INT NOT NULL
)
INSERT INTO ##tbl
SELECT 11, 164885, 164885, 24
UNION SELECT 11, 164885, 431072, 3
UNION SELECT 51, 731754, 690695, 2
UNION SELECT 51, 204086, 316310, 2
UNION SELECT 54, 818522, 501263, 1
DECLARE @vid VARCHAR(2)
DECLARE @querytextNoVid VARCHAR(100)
DECLARE @querytext VARCHAR(100)
DECLARE @filelocation VARCHAR(100)
DECLARE @cmd VARCHAR(255)
DECLARE vid_cursor CURSOR FOR SELECT DISTINCT vid FROM ##tbl
OPEN vid_cursor
FETCH NEXT FROM vid_cursor INTO @vid
WHILE @@FETCH_STATUS = 0
BEGIN
SET @querytext = '"SELECT ak_from, ak_to, w FROM ##tbl WHERE vid = ' + @vid + '"'
SET @filelocation = '"c:\out_vid' + @vid + '.dat"'
SET @cmd = 'bcp ' + @querytext + ' queryout ' + @filelocation + ' -T -c'
EXEC master..XP_CMDSHELL @cmd
FETCH NEXT FROM vid_cursor INTO @vid
END
CLOSE vid_cursor
DEALLOCATE vid_cursor
DROP TABLE ##tbl
你需要确保xp_cmdshell的通过sp_configure的启用(请参阅:Enable 'xp_cmdshell' SQL Server)
欢迎*上:如果您发布的代码,XML或数据样本,** **请在突出的那些行文本编辑器并点击编辑器工具栏上的“代码示例”按钮(“{}”),以精确地格式化和语法突出显示它! – 2013-02-13 05:36:24
你的问题到底是什么?有很多方法可以做到这一点,到目前为止你已经尝试过了吗?你有什么问题? – Pondlife 2013-02-13 17:10:21
如何为此编写查询? – sahar 2013-02-13 19:49:51