Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
AmKad Member Откуда: Сообщений: 5238 |
yas9, bcp |
17 июл 12, 13:18 [12877448] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
qwer234
Guest |
Slava_Nik, только вот придется давать права на xp_xmdshell, что в принципе нехорошо |
17 июл 12, 13:41 [12877582] Ответить | Цитировать Сообщить модератору |
Slava_Nik Member Откуда: из России Сообщений: 891 |
прокси учетка у которой права урезанные. |
||
17 июл 12, 13:44 [12877600] Ответить | Цитировать Сообщить модератору |
edyaN Member Откуда: Сообщений: 185 |
У Вас каша в запросе: 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] Ответить | Цитировать Сообщить модератору |
edyaN Member Откуда: Сообщений: 185 |
здесь я погорячился :) |
||
17 июл 12, 15:50 [12878550] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |