Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
Есть ХП, в которую передаются параметры - алгоритм создания данных и имя текстового файла (\\comp1\aaa.txt), в который надо эти данные разместить.
В ХП я в итоге получаю временную табл #tmp, которую затем хочу выгрузить в файл. Подскажите плз как это можно сделать?
Заранее всем спасибо
31 янв 06, 11:57    [2304424]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
FAQ
31 янв 06, 12:02    [2304452]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
vooo
Member

Откуда:
Сообщений: 1316
см BCP queryout, при этом процедура должна возвращать необходимый набор данных
например
declare 
@cmd varchar(1000),
@result int
Set @cmd = 'BCP "EXEC databasename..spNamel" queryout "' + @OutputFileName + '" -C RAW  -Sservername -Uusername -Ppassword -c'
select @cmd
EXEC @result = master..xp_cmdshell @cmd,no_output
31 янв 06, 12:04    [2304463]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
Гавриленко Сергей Алексеевич
FAQ

Не нашла, хотя старалась...
31 янв 06, 12:25    [2304619]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
vooo
см BCP queryout, при этом процедура должна возвращать необходимый набор данных
например
declare 
@cmd varchar(1000),
@result int
Set @cmd = 'BCP "EXEC databasename..spNamel" queryout "' + @OutputFileName + '" -C RAW  -Sservername -Uusername -Ppassword -c'
select @cmd
EXEC @result = master..xp_cmdshell @cmd,no_output

Спасибо, сейчас попробую.
31 янв 06, 12:26    [2304625]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
vooo
Member

Откуда:
Сообщений: 1316
_Polina_
FAQ

Не нашла, хотя старалась...

Плохо искали
тут
31 янв 06, 12:33    [2304675]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
vooo
Плохо искали
тут

Спасибо, даже несколько вариантов....
31 янв 06, 12:44    [2304728]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
vooo
см BCP queryout, при этом процедура должна возвращать необходимый набор данных

Неполучилось.
Set @cmd = 'BCP "select Comm from tempDB.dbo.#tmp" queryout "' + @OutputFileName + '" -w -C1251 -r -T'
EXEC @result = master..xp_cmdshell @cmd,no_output
Возвращает @result =1
Вставлено прямо в ту процедуру, которая все обсчитывает и генерит табл #tmp
31 янв 06, 12:49    [2304750]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
vooo
Member

Откуда:
Сообщений: 1316
[QUOTE]
Set @cmd = 'BCP "select Comm from tempDB.dbo.#tmp" queryout "'
[/QUOTE]
1 - bcp не работает с локальными темп таблицами (#), только с глобальными (##)
2 - попробуйте все таки использовать обертку, которую я предоставил ранее (через вызов ХП) ну или воспользуйтесь FAQ
31 янв 06, 13:07    [2304869]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
vooo

Set @cmd = 'BCP "select Comm from tempDB.dbo.#tmp" queryout "'

1 - bcp не работает с локальными темп таблицами (#), только с глобальными (##)
2 - попробуйте все таки использовать обертку, которую я предоставил ранее (через вызов ХП) ну или воспользуйтесь FAQ

С глобальной тоже неполучилось... :-((
Попробую через Scripting.FileSystemObject, то что в FAQ

СПАСИБО!!!
31 янв 06, 13:35    [2305055]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
vooo
Member

Откуда:
Сообщений: 1316
странно, у меня все получилось

create table ##test (id int,name varchar(50))
go
insert into ##test values (1,'One') 
insert into ##test values (2,'Two')
go
declare 
@cmd varchar(1000),
@result int
select @cmd='bcp "select * from  TEMPDB..##test" queryout  C:\t.txt -C RAW  -S"Servername" -U"username" -P"password" -c' 
select @cmd
EXEC @result= master..xp_cmdshell @cmd , no_output
if @result=0 print 'OK'
31 янв 06, 14:00    [2305215]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
vooo
странно, у меня все получилось

Ухх... и как я смотрела только...
Везде имя таблицы поменяла, а здесь оставила прежднее...
create table ##tmp(Comm varchar(5000))
select @cmd='bcp "select * from  TEMPDB..#test" queryout "' + @OutputFile '" -w -C1251 -r -T'
Исправила - и данные выгрузились... Только в таком виде - жуть... Почему-то все записи таблицы в 1 строку...
Причем строка начинается с 1-й поз 1-й строкой из таблицы, с 5001 поз - 2-я строка табл, с 10001 - 3-я и т.д. Для наглядности:

Иванов Петров Сидоров

Что бы это значило???
31 янв 06, 15:11    [2305567]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
Glory
Member

Откуда:
Сообщений: 104760
_Polina_
Исправила - и данные выгрузились... Только в таком виде - жуть... Почему-то все записи таблицы в 1 строку...
Причем строка начинается с 1-й поз 1-й строкой из таблицы, с 5001 поз - 2-я строка табл, с 10001 - 3-я и т.д. Для наглядности:
Что бы это значило???

Ну вы же сами поставили параметер -r
31 янв 06, 15:16    [2305586]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
vooo
Member

Откуда:
Сообщений: 1316
либо прочитайте внимательно в BOL bcp
либо используйте образец строки (подставив сюда свое наименовние таблицы, имя файла, а также параметры коннекта к серверу)
select @cmd='bcp "select * from  TEMPDB..##test" queryout  C:\t.txt -C RAW  -S"Servername" -U"username" -P"password" -c' 
31 янв 06, 15:19    [2305603]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка данных из ХП в текстовый файл  [new]
_Polina_
Member

Откуда: Санкт-Петербург
Сообщений: 171
vooo
либо прочитайте внимательно в BOL bcp
либо используйте образец строки (подставив сюда свое наименовние таблицы, имя файла, а также параметры коннекта к серверу)
select @cmd='bcp "select * from  TEMPDB..##test" queryout  C:\t.txt -C RAW  -S"Servername" -U"username" -P"password" -c' 

Вау, получилось!!!
Спасибо вам огромное!!!
31 янв 06, 15:28    [2305664]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить