Я создал запрос, который генерирует файл CSV (в данный момент он не работает должным образом), но мне нужно обновлять его каждые 15 минут.Я вижу, что это делается либо добавлением данных, либо удалением CSV, а затем перезаписью его со всеми соответствующими данными.Данные взяты из таблицы, которая обновляется каждые 15 минут из хранимой процедуры.Имя файла не может быть изменено.
Я читал, что вы не можете удалить или добавить файл CSV с помощью SQL, будь то BCP или любым другим способом.
Является ли подходящим способом написать сервис на C # для этого или есть способ сделать это на SQL.Я не уверен, что мой запрос тоже правильный.
Мой запрос:
DECLARE @_FilePath NVARCHAR(MAX)
DECLARE @_FileName NVARCHAR(MAX)
DECLARE @_SerialNumber NVARCHAR(MAX)
DECLARE @_OutputPath NVARCHAR(MAX)
CREATE TABLE #tmp
(
SerialNumber NVARCHAR(75),
CustomerName NVARCHAR(MAX),
Processed BIT,
FolderLocation NVARCHAR(MAX)
)
INSERT INTO #tmp
SELECT d.SerialNumber, d.CustomerName, 0, f.folderLocation
FROM Staging.Device d
INNER JOIN Staging.FtpFolders f ON d.CustomerName = f.CustomerName
WHILE (SELECT COUNT(*) FROM #tmp WHERE Processed = 0) > 0
BEGIN
SET @_SerialNumber = (SELECT TOP 1 SerialNumber FROM #tmp
WHERE Processed = 0 AND SerialNumber IS NOT NULL)
SELECT TOP 1 @_FilePath = FolderLocation
FROM #tmp
WHERE Processed = 0 AND SerialNumber = @_SerialNumber
SELECT @_FileName = CONVERT(DateTime, DATEDIFF(DAY, 0, GETDATE()))
SET @_OutputPath = @_FilePath + '\' + @_FileName + '.csv'
UPDATE #tmp
SET Processed = 1
WHERE SerialNumber = @_SerialNumber
SELECT @_OutputPath
DECLARE @ExportSQL NVARCHAR(MAX);
SET @ExportSQL = N'EXEC master.dbo.xp_cmdshell ''bcp "SELECT * FROM [Staging].[PivotedData15]" queryout "' + @_OutputPath + '" -T -c -t -S '''
END
DROP TABLE #tmp