2015-03-27 19 views
0

SQL Server 2008 R2SQL Server Удалить двойные кавычки

Я создаю файл XML из SQL Server и один столбец вызывает у меня проблемы из-за "внутри VARCHAR.

XML-выглядит следующим образом после того, как экспорт,

<variantValue name="marketingInfo" value="random text.&#x0D;&#x0A;&#x0D;&#x0A; random text.&#x0D;&#x0A;&#x0D;&#x0A;"random text""/> 

который, конечно, разбивает файл XML.

оказалось, я перепутал "за» (U + 201D ПРАВОЙ DOUBLE КАВЫЧКА), который почему repla ce не работает. Она тем не менее по-прежнему экспортировать в обычный "в XML.

Как вы справляетесь с текстовыми полями при экспорте из SQL в XML, чтобы избежать каких-либо символов, которые могут разорвать XML?

процедура SQL выглядит примерно так это,

declare @pricat xml 

set @Pricat = (
    --Pricat HEAD 
    select ..some attributes 
     --Pricat ROWS 
     ,(select ..sone attributes 

      -- PriceBracket 1 (PRE) 
      ,(select ..some attributes 
      for xml path ('priceBracket'), type) 

      -- PriceBracket 2 (Supp) 
      ,(select ..some attributes 
      for xml path ('priceBracket'), type) 

      -- VariantValue 01 
      ,(select ..some attributes 
      for xml path ('variantValue'), type) 

      -- VariantValue 02 
      ,(select ..some attributes 
      for xml path ('variantValue'), type) 

     for xml path ('sprProduct'), type) 
from prh 
FOR XML PATH ('Pricat') 
) 

-- Not sure if this is a good way to add verion and encoding tag.   
--select '<?xml version="1.0" encoding="ISO-8859-1"?>' + cast(@Pricat as varchar(max)) as xml 
select @b24Pricat 

XML файл создается, как показано ниже,

declare @filename varchar(100) 
declare @cmd varchar(256) 
declare @date datetime 

set @date = getdate() 
set @filename = cast(datepart(year,@date) as varchar)+cast(LEFT(CONVERT(CHAR(20), @date, 101), 2) as varchar)+cast(datepart(day,@date) as varchar) 
set @filename = @filename + '_' + cast(datepart(minute,@date) as varchar)+ cast(datepart(second,@date) as varchar) 
set @filename = 'blabla_' + @filename + '.xml' 
-- -C 28591 
set @cmd = 'bcp "exec db..procedure 1,2,3,4" queryout "c:\export\'+ @filename +'" -T -c -C 28591' 

EXEC xp_cmdshell @cmd 
+0

вы можете отметить SQL для создания XML- – ughai

+0

Его большой, и мне нужно, чтобы изменить его много, прежде чем я могу разместить его. С простым выбором в текстовом столбце я получаю такую ​​же проблему, поэтому я не думаю, что проблема с двойными кавычками связана с xml. – fish

+0

Sql автоматически ускользает символы при использовании операции XML, как показано ниже _DECLARE @s VARCHAR (10) = 'SDF "аа '; SELECT @s '@s' FOR XML PATH (' F') _ – ughai

ответ

0

Я не уверен, если его весь ответ, но изменив команду BCP ниже решена моя проблема.

set @cmd = 'bcp "exec db..procedure 1,2,3,4" queryout "c:\export\'+ @filename +'" -T -w 
Смежные вопросы