在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
答案 0 :(得分:0)
如果您正在使用MSSQL,我会说使用BCP或SQLCMD实用程序。以下是关于同一问题的上一篇文章:
https://dba.stackexchange.com/questions/23566/writing-select-result-to-a-csv-file