2016-12-02 6 views
0

У меня есть сценарий, где мне нужно передать результат инструкции select в пакетный скрипт, а затем сгенерировать еще один файл со значениями.Как я могу прочитать вывод инструкции select и назначить его различным параметрам в batchfile в цикле

SQL запросов:

Select SrcName, TrgName from dbo.t_src_trg_ref where Loadstatus='Assinged' 

O/P для этого запроса будет как:

SrcName | TrgName 
src1 | trg1 
src2 | trg2 
src3 | trg3 

И так далее

Пакетный сценарий должен прочитать этот вывод и создать текстовый файл для каждого строка в цикле, содержимое файла должно быть следующим:

file1.txt 
$$src=src1 
$$trg=trg1 

file2.txt 
$$src=src2 
$$trg=trg2 

file3.txt 
$$src=src3 
$$trg=trg3 

И так далее.

Любая помощь в этом отношении, я новичок в написании сценариев и считаю очень трудным разработать пакетный скрипт для этого.

Заранее спасибо.

+0

Почему вы не можете создавать файлы в SQL? –

+0

Не имеют разрешения на выполнение расширенных хранимых процедур на SQL-сервере. Вот почему вы хотите сделать это в Batch Script :( – Anurag

ответ

0

Вы можете создать SQL cursor затем в кодах Петли курсора, используя команду SQL BCP с xp_cmdshell процедуры, вы можете create text files из базы данных SQL Server с настраиваемыми данными

Например, после использования кода курсора можно создавать текстовые файлы с образцами данных в нем

DECLARE @sql VARCHAR(1000) 

DECLARE @name sysname 

DECLARE mycursor CURSOR FAST_FORWARD FOR SELECT name FROM sys.tables 
OPEN mycursor 
FETCH NEXT FROM mycursor INTO @name 

WHILE @@FETCH_STATUS = 0 
BEGIN 

SET @sql = 'bcp "select ''' + replace(@name,'''','''''') + '''" queryout "c:\temp\' + @name + '.txt" -c -UTF8 -T -Slocalhost"' 
EXEC master..xp_cmdshell @sql 

FETCH NEXT FROM mycursor INTO @name 
END 

CLOSE mycursor 
DEALLOCATE mycursor 

созданные файлы рассматриваются как ниже

enter image description here

+0

Спасибо за помощь .. но у вас нет разрешения на выполнение на xp_cmdshell. Попробуем получить требуемое разрешение. Хотя есть ли другая работа? – Anurag