SQL Server - Как записать переменные и результаты запроса в текстовый файл? - PullRequest
1 голос
/ 11 апреля 2011

Как мне писать с использованием T-SQL, значений переменных и результатов запросов в текстовый файл, я хочу продолжать добавлять.

Ответы [ 4 ]

3 голосов
/ 12 апреля 2011

Это работает, но немного загадочно.Настройтесь на ваш запрос.По сути, вы будете создавать строки эха командной оболочки для выполнения через xp_cmdshell и проходить по ним.

3 голосов
/ 12 апреля 2011

Вы можете использовать SQL CLR для записи любого файла в файл.Вы можете либо написать это самостоятельно, либо использовать библиотеку SQL # (я являюсь автором, и она не бесплатна - для этой функции - но и не дорого), а также использовать функцию File_WriteFile для записи текста.Это позволяет добавлять данные.Библиотека бесплатна для большинства функций, но не для функций файловой системы.Его можно найти по адресу: http://www.SQLsharp.com/

Если вы хотите попробовать написать это самостоятельно, я нашел этот пример, который является основной концепцией, которую, как вы думаете, вы запрашиваете:

1 голос
/ 12 апреля 2011

Включение и использование xp_cmdshell подвергает ваш экземпляр дополнительной угрозе безопасности. Использование CLR безопаснее, но также не рекомендуется для этой цели. Эти два варианта только ухудшают плохое дизайнерское решение.

Почему вы пытаетесь записать файл из T-SQL? Не поддавайтесь желанию превратить SQL Server в платформу сценариев. Используйте язык приложения, такой как SSIS, PowerShell или C #, для взаимодействия с SQL Server и при необходимости записывайте выходные данные в файл журнала.

0 голосов
/ 04 декабря 2013

У меня были проблемы в этой теме, поэтому я хочу предложить, что я сделал. Я объявил курсор для результатов выбора, а затем записываю их в файл. Например:

 DECLARE @cmd NVARCHAR(400)
 DECLARE @var AS NVARCHAR(50) 
         ,@Count = (SELECT COUNT(*) FROM Students) 
DECLARE Select_Cursor CURSOR FOR 
SELECT name FROM Students OPEN Select_Cursor 
 FETCH NEXT FROM Select_Cursor INTO @var 
WHILE (@Count>0) 
 SET @cmd = 'echo ' + @var +' >> c:\output.txt' 
 EXEC master..xp_cmdshell @cmd 
SET @Count = @Count - 1 
FETCH NEXT FROM Select_Cursor INTO @var 
END
 CLOSE SelectCursor
 DEALLOCATE  SelectCursor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...