2013-09-05 1 views
5

Я хочу экспортировать значения из SQL Server в txt-файл. Я знаю о BCP, мне нужно указать имя запроса или таблицы для экспорта данных из таблицы. Я не хочу экспортировать данные, но хочу экспортировать значения, назначенные переменной. Как я могу это сделать, любую помощь?Экспорт значений из SQL Server в txt-файл

+0

Что вы имеете в виду 'экспорта значений, присвоенных variable' ..? – user2339071

+0

, например: 'declare @var int = 10', я хочу, чтобы 10 присутствовало в .txt-файле – niren

+0

В Management Studio вы можете установить параметр« Результаты в текст »на панели инструментов команд (или CTRL + T) и все, что вы выполняете в окне запросов результаты будут отправлены в текстовый файл –

ответ

5

Используйте запрос для сбора переменных, которые вы хотите экспортировать. Что-то вроде этого:

DECLARE @var1 INTEGER 
DECLARE @var2 INTEGER 

SELECT @var1 = 10 
SELECT @var2 = 22 

SELECT 'variable 1' AS VarName, @var1 AS VarValue 
UNION 
SELECT 'variable 2' AS VarName, @var2 AS VarValue 

Используйте этот оператор запроса в следующей команде. Используйте запрос и замените [querystatement] приведенным выше выражением или используйте переменную для строки запроса.

EXEC master..XP_CMDSHELL 'bcp "[querystatement]" queryout "c:\spt_values.dat"' 

Если нужна переменная будет объявлена ​​вне заявления:

DECLARE @cmd varchar(1000) 
DECLARE @sql varchar(8000) 
DECLARE @var1 int 
SELECT @var1 = 10 
SET @cmd='"select '+CAST(@var1 AS VARCHAR(10))+'"' 
SELECT @sql = 'bcp '[email protected]+' queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'; 
exec xp_cmdshell @sql; 
+0

Я не могу найти, как я могу экспортировать значения в файл .txt в вашем ответе, но я попытался выполнить запрос, который вы указали с экспортом BCP, но он не работает. Есть ли другой способ, которым я могу это сделать. – niren

+0

Я нашел где-то в другом месте: EXEC master..XP_CMDSHELL 'bcp "[querystatement]" queryout "c: \ spt_values.dat"' Вы использовали параметр queryout? – Wietze314

+0

Это работает Если я использую так: declare @cmd varchar (1000) declare @sql varchar (8000) set @cmd = '"DECLARE @ var1 int; SELECT @ var1 = 10; select @ var1"' SELECT @sql = 'bcp' + @ cmd + 'queryout I: \ File \ mytest.txt -c -t -T -S YAMUNA \ SQLEXPRESS'; exec xp_cmdshell @sql; Но я хочу объявить и назначить переменные '@ var1' за пределами кавычек – niren

Смежные вопросы