遍历一个SQL表中的每个值以查找另一个表中的关联记录

时间:2015-04-28 19:44:00

标签: sql cursor

在SQL中,我需要根据Lookup表中字段的每个值从一个表中返回一组记录。所以我有一个包含文件名字段的查找表,我需要遍历每个文件名,并根据该字段查找另一个表中的记录(文件名是两个表中的关键字段)。在确定每组记录后,我需要在计算机上将每个记录保存为本地CSV文件。我尝试了下面的光标,它不起作用。有人可以帮忙吗?

DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path to save file
DECLARE @fileName VARCHAR(256) -- filename for output file DECLARE @fileDate VARCHAR(20) -- used for file name

SET @path = 'C:\Output\'

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR

SELECT * FROM dbo.filenamelookup fl JOIN dbo.recordstable rt ON fl.filename = rt.filename OPEN db_cursor
FETCH NEXT FROM db_cursor INTO #temp

WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.csv'
BACKUP DATABASE #temp TO DISK = @fileName

   FETCH NEXT FROM db_cursor INTO @name   

END

CLOSE db_cursor
DEALLOCATE db_cursor

1 个答案:

答案 0 :(得分:0)

如果您正在使用MSSQL,我会说使用BCP或SQLCMD实用程序。以下是关于同一问题的上一篇文章:

https://dba.stackexchange.com/questions/23566/writing-select-result-to-a-csv-file