На самом деле в этом запросе есть два вопроса.Первый связан с созданием XML-файла из SQL-запроса с несколькими дочерними записями в 3 категориях.
Сгенерированный XML, кажется, объединяет все дочерние элементы в одно значение.Мне нужно, чтобы они были разделены одним и тем же тегом.
Второй вопрос - попытка вывести полученный файл в файл XML в определенной папке на сервере SQL
Я пробовал несколько настроекдля данных, но ни одна из них не работает, например, включая [1] и [2], (1) и (2), исключая родительский элемент для второго значения и т. д. Я сделал это в MS Access, используя XSLT-преобразование
Что касается вывода, я пробовал BCP, queryout, OutputFile Output To и несколько других.Запрос указывает, что он был успешным, но файл не создан.
Таблица SQL (FD__Services_from_XML) выглядит следующим образом: Все поля Varchar (50)
Service_SRI CovServ_Mod1 CovServ_Mod2
1 B1 B2
2 C1 C2
3 D1 D2
Запрос, генерирующий XMLвыглядит следующим образом:
DECLARE @fileName VARCHAR(50)
DECLARE @sqlStr VARCHAR(2000)
DECLARE @sqlCmd VARCHAR(1000)
--
SET @fileName = 'C:\Users\Steve\Downloads\XML_Export_Test_1.xml'
--
SET @sqlStr =
'
Select
Service_SRI As [SourceRecordIdentifier],
CovServ_Mod1 As [ServiceModifiers/ServiceModifier],
CovServ_Mod2 As [ServiceModifiers/ServiceModifier]
FROM FD__Services_from_XML
FOR XML PATH('ServiceEvent'), ROOT('ServiceEvents')
'
--
SET @sqlCmd = 'bcp "' + @sqlStr + '" queryout ' + @fileName + ' -w -T'
--
EXEC xp_cmdshell @sqlCmd
Как я уже упоминал ранее, я ожидал, что файл будет создан в C: \ Users \ Steve \ Downloads \ XML_Export_Test_1.xml. Файл не был создан.Я получаю сообщение «Запрос выполнен успешно».
Вывод XML, который я получаю, выглядит следующим образом: Обратите внимание, что два отдельных поля Covserv_Mod1 и Mod2 объединены
<ServiceEvents>
<ServiceEvent>
<SourceRecordIdentifier>1</SourceRecordIdentifier>
<ServiceModifiers>
<ServiceModifier>B1B2</ServiceModifier>
</ServiceModifiers>
</ServiceEvent>
etc ...
</ServiceEvents>
Вывод, который я искалis:
<ServiceEvents>
<ServiceEvent>
<SourceRecordIdentifier>1</SourceRecordIdentifier>
<ServiceModifiers>
<ServiceModifier>B1</ServiceModifier>
<ServiceModifier>B3</ServiceModifier>
</ServiceModifiers>
</ServiceEvent>
etc ...
</ServiceEvents>
Таблица SQL:
CREATE TABLE [dbo].[FD__Services_from_XML](
[Service_SRI] [nvarchar](50) NOT NULL PRIMARY KEY,
[CovServ_Mod1] [nvarchar](50) NULL,
[CovServ_Mod2] [nvarchar](50) NULL
) ON [PRIMARY]
Я импортировал данные XML из файла XML, который выглядит следующим образом:
<ServiceEvents>
<ServiceEvent>
<SourceRecordIdentifier>1</SourceRecordIdentifier>
<ServiceEventCoveredServiceModifiers>
<ServiceEventCoveredServiceModifier>
<ModifierCode>B1</ModifierCode>
</ServiceEventCoveredServiceModifier>
<ServiceEventCoveredServiceModifier>
<ModifierCode>B2</ModifierCode>
</ServiceEventCoveredServiceModifier>
</ServiceEventCoveredServiceModifier>
</ServiceEvent>
etc. … (1, C1, C2) (3, D1, D2)
</ServiceEvents>