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

Откуда:
Сообщений: 2694
Скажите пожалуйста, как переменную @tableHTML сохранить в файл .htm на сервере?
(не могу сыформировать командную строку)


DECLARE @tableHTML  NVARCHAR(MAX) ;

SET @tableHTML =
N'<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><H1>ккккк на '+convert(varchar(10),getdate(),104)+'</H1>' +
N'<table border="1">' +
N'<tr style="text-align:justify;border-color:#42aaff; background:#a52a2a;"><th>мммм</th><th>вввв</th>' +
N'<th>ппп</th><th>ооо</th><th>a</th><th>b</th><th>c</th><th>d</th><th>e</th><th>f</th>' +
N'<th>g</th></tr>' +
CAST (ISNULL(
(select
td =isnull(gr_pos,'нет'),'',
td =isnull(work_name,'нет'),'',
td =isnull(name_doc,'нет'),'',
td =isnull(code_doc,'нет'),'',
td =isnull([a],'нет'),'',
td =isnull([b],'нет'),'',
td =isnull([c],'нет'),'',
td =isnull([d],'нет'),'',
td =isnull([e],'нет'),'',
td =isnull([f],'нет'),'',
td =isnull([g],'нет'),''
from
tdf..task_report
FOR XML PATH('tr'), TYPE
),'') AS NVARCHAR(MAX)) +
N'</table></html>';


Заранее благодарен.
8 июн 11, 11:03    [10781067]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
vah, xp_cmdshell + bcp или через OLE или через CLR
8 июн 11, 11:09    [10781135]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
vah
Member

Откуда:
Сообщений: 2694
kDnZP
vah, xp_cmdshell + bcp или через OLE или через CLR


а можете примерчик дать?
8 июн 11, 11:56    [10781600]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
vah
kDnZP
vah, xp_cmdshell + bcp или через OLE или через CLR


а можете примерчик дать?

Примерчик чего из 3х разных технологий? По bcp есть справка, OLE рядом обсуждается, ну или поиском можно поглядеть. CLR - опять же - документация есть по созданию процедур, а выгрузка в файл задача элементарная.
И опять же, видно, что FAQ вы не читали, а стоит.
8 июн 11, 12:10    [10781761]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
что-то вроде этого
DECLARE @tableHTML  NVARCHAR(MAX) ;
SET @tableHTML =    N'<HTML><HEAD><meta http-equiv="Content-Type" ></html>';
declare @cmd varchar(500) 
set @cmd='bcp "SELECT '''+ @tableHTML+ ''' " queryout c:\test.html -c -T'  
print @cmd
EXEC xp_cmdshell  @cmd
в твоей переменной нужно будет кавычки задублировать
8 июн 11, 12:18    [10781836]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
vah
Member

Откуда:
Сообщений: 2694
Slava_Nik
что-то вроде этого
DECLARE @tableHTML  NVARCHAR(MAX) ;
SET @tableHTML =    N'<HTML><HEAD><meta http-equiv="Content-Type" ></html>';
declare @cmd varchar(500) 
set @cmd='bcp "SELECT '''+ @tableHTML+ ''' " queryout c:\test.html -c -T'  
print @cmd
EXEC xp_cmdshell  @cmd
в твоей переменной нужно будет кавычки задублировать


Не работает...
В этой строке 1946295 символов ((
8 июн 11, 13:11    [10782296]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
vah,

declare @cmd varchar(500)
заменить на
declare @cmd varchar(max)
8 июн 11, 13:44    [10782593]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
vah
Member

Откуда:
Сообщений: 2694
kDnZP
vah,

declare @cmd varchar(500)
заменить на
declare @cmd varchar(max)


тогда пишет

Сообщение 214, уровень 16, состояние 201, процедура xp_cmdshell, строка 1
Процедура ожидает параметр "command_string" типа "varchar".
8 июн 11, 13:51    [10782675]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
vah, и че? У bcp queryout не единственная опция.
Вы, кстать, ФАК так и не прочитали?
8 июн 11, 13:56    [10782722]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
vah
Member

Откуда:
Сообщений: 2694
kDnZP
vah, и че? У bcp queryout не единственная опция.
Вы, кстать, ФАК так и не прочитали?


Да там ничего нет
8 июн 11, 14:04    [10782788]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
vah,

это пробовали https://www.sql.ru/faq/faq_topic.aspx?fid=122
8 июн 11, 14:09    [10782832]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
DECLARE @HR integer,    
   @Stream integer,    
   @Buffer varbinary(4096),    
   @Size integer,    
   @Pos integer,    
   @BufSize integer,    
   @Image binary(16)    
                                
SET @BufSize = 4096    
    
 EXEC @HR = master.sys.sp_OACreate 'ADODB.Stream',@Stream OUT     
 IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END 
 EXEC @HR = sp_OASetProperty @Stream,'Type',1 -- binary    
 IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END 
 EXEC @HR = sp_OASetProperty @Stream,'Mode',3 -- write|read    
 IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END 
 EXEC @HR = sp_OAMethod @Stream,'Open'     
 IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END     
 
 select     
  @Size  = DATALENGTH(FileData)    
 FROM dbo.ShippingFiles WHERE RowID = @pROWID     
     
 Set @Pos=0    
    
 WHILE @Pos < @Size BEGIN    
   SET @BufSize = CASE WHEN @Size - @Pos < 4096 THEN @Size - @Pos ELSE 4096 END    
    
   select @Buffer = substring( FileData ,@Pos+1, @BufSize)        
   from dbo.ShippingFiles where RowID = @pROWID 
    
         
   EXEC @HR = sp_OAMethod @Stream, 'Write',  NULL, @Buffer      
   IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END 
      
   SET @Pos = @Pos + @BufSize    
 END    
    
  
 EXEC @HR = sp_OAMethod @Stream,'SaveToFile',null,@pFILENAME,2     
 IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END 
 EXEC @HR = sp_OAMethod @Stream,'Close'    
 IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END 
 EXEC @HR = sp_OADestroy @Stream
 IF ( @HR <> 0 ) BEGIN  EXEC [SYNC].[P_OAGetErrorInfo] @Stream  GOTO ERROR END 
 RETURN (0)
8 июн 11, 14:16    [10782898]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
vah,

это пробовали https://www.sql.ru/faq/faq_topic.aspx?fid=122
8 июн 11, 14:19    [10782930]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузить в файл  [new]
vah
Member

Откуда:
Сообщений: 2694
Slava_Nik
vah,

это пробовали https://www.sql.ru/faq/faq_topic.aspx?fid=122


и какой из вариантов Вы предлагаете?
8 июн 11, 14:22    [10782952]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить