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

Откуда:
Сообщений: 36
Добрый день. Есть база данных mssql 2008. В ней хранятся данные звонков (у нас call-центр). Одна из таблиц содержит данные о записанных звонках и пути, куда запись каждого звонка сохранена. Необходимо выгрузить (скопировать) файлы этих записей в другую папку в более удобном виде и по определенным критериям. Запрос выборки я написал:
select [OrgName],[DestName], [OrgLine], 
	[StartTime], [Duration], [MediaFileName]   
	FROM [INFRAVISOR].[dbo].[IV_CallRecord] 
	where [Duration] >= 360 
		and day(StartTime) >= day (getdate ()-1)
		and MONTH (StartTime) = MONTH (GETDATE ())
		and year (StartTime) = year (GETDATE ())
		and [StartTime] >  '10:00:00'
	or	  [Duration] >= 360
		and day(StartTime) = day (getdate ())
		and [StartTime] <  '10:00:00'
		and MONTH (StartTime) = MONTH (GETDATE ())
		and year (StartTime) = year (GETDATE ())

Как выгрузку организовать? Средствами mssql это возможно?
17 июл 12, 13:17    [12877438]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить файлы  [new]
AmKad
Member

Откуда:
Сообщений: 5238
yas9,

bcp
17 июл 12, 13:18    [12877448]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить файлы  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 891
примерно но так:
выдернул само копирование

declare cur cursor for
SELECT ... FROM Attachment a

open cur
fetch next from cur into @file

WHILE (@@FETCH_STATUS =0)

BEGIN
set @source= '\\server1\f$\Attachments\'
set @dest= '\\server2\c$\Attachments\'+@file+'\'
set @source =@source+@file
set @com='xcopy '+@source+' '+@dest+' /E /Y'
print @com
execute xp_cmdshell @com
---print 'rd '+@source+' /s /q' -- удаление
Set @i=@i+1
print @i
FETCH NEXT FROM cur INTO @file
END 
CLOSE cur

DEALLOCATE cur
17 июл 12, 13:38    [12877570]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить файлы  [new]
qwer234
Guest
Slava_Nik,

только вот придется давать права на xp_xmdshell, что в принципе нехорошо
17 июл 12, 13:41    [12877582]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить файлы  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 891
qwer234
Slava_Nik,

только вот придется давать права на xp_xmdshell, что в принципе нехорошо

прокси учетка у которой права урезанные.
17 июл 12, 13:44    [12877600]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить файлы  [new]
edyaN
Member

Откуда:
Сообщений: 185
yas9
Добрый день. Есть база данных mssql 2008. В ней хранятся данные звонков (у нас call-центр). Одна из таблиц содержит данные о записанных звонках и пути, куда запись каждого звонка сохранена. Необходимо выгрузить (скопировать) файлы этих записей в другую папку в более удобном виде и по определенным критериям. Запрос выборки я написал:
select [OrgName],[DestName], [OrgLine], 
	[StartTime], [Duration], [MediaFileName]   
	FROM [INFRAVISOR].[dbo].[IV_CallRecord] 
	where [Duration] >= 360 
		and day(StartTime) >= day (getdate ()-1)
		and MONTH (StartTime) = MONTH (GETDATE ())
		and year (StartTime) = year (GETDATE ())
		and [StartTime] >  '10:00:00'
	or	  [Duration] >= 360
		and day(StartTime) = day (getdate ())
		and [StartTime] <  '10:00:00'
		and MONTH (StartTime) = MONTH (GETDATE ())
		and year (StartTime) = year (GETDATE ())

Как выгрузку организовать? Средствами mssql это возможно?

У Вас каша в запросе:
and day(StartTime) >= day (getdate ()-1)

Вы хорошо себе представляете, что выдаст getdate ()-1 ?


day(StartTime) = day (getdate ())

вероятность, что это условие выполниться стремиться к нулю.



ну и как только в запросе появляется "OR", то надо ставить скобки иначе результат может удивить.

HINT: сконвертируйте starttime в datetime (если он у вас в varchar, при этом обратите внимание на текущий формат даты) и выбирайте по диапазону дат
cast(starttime as datetime) >= dateadd(day, datediff(day, 0, getdate()), 0) -- это дата "сегодня 0 часов"
cast(starttime as datetime) < dateadd(hour, 10, dateadd(day, datediff(day, 0, getdate()), 0)) -- это дата "сегодня 10 утра"
17 июл 12, 15:49    [12878530]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить файлы  [new]
edyaN
Member

Откуда:
Сообщений: 185
edyaN
day(StartTime) = day (getdate ())

вероятность, что это условие выполниться стремиться к нулю.

здесь я погорячился :)
17 июл 12, 15:50    [12878550]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить