Я импортирую сгенерированные XML-файлы в базу данных SQL Server. Он работает нормально, но теперь мне нужна дополнительная информация с узла, который повторяется, и я не могу понять это. Я использую VBScript с SQLXMLBulkLoad.SQLXMLBulkload.4.0
для импорта файлов. Есть много <file>
узлов в каждом файл, и здесь упрощенные как пример:Как импортировать XML в SQL Server при повторении базовых узлов
<?xml version="1.0" encoding="UTF-8"?>
<samp_catalog version='1.0'>
<file>
<name>123.wav</name>
<xyz>
<a_samp>
<a_one>1</a_one>
<a_two>2</a_two>
<a_three>3</a_three>
</a_samp>
<b_samp version='2.0'>
<b_four>sample</b_four>
<b_five>sample</b_five>
<b_six>sample</b_six>
</b_samp>
<c_samp version='1.0'>
<c_entry>
<total_size>0</total_size>
<sig>sample</sig>
<type>SAMPLE</type>
<data_size>256</data_size>
<data encoding='string'></data>
</c_entry>
</c_samp>
<c_samp version='1.0'>
<c_entry>
<total_size>0</total_size>
<sig>sample</sig>
<type>PHONE</type>
<data_size>256</data_size>
<data encoding='string'>15555551212</data>
</c_entry>
</c_samp>
<c_samp version='1.0'>
<c_entry>
<total_size>0</total_size>
<sig>sample</sig>
<type>OTHER_SAMPLE</type>
<data_size>256</data_size>
<data encoding='string'></data>
</c_entry>
</c_samp>
</xyz>
</file>
</samp_catalog>
Без повторяющихся c_samp
узла, схема была проста:
<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema" xmlns:sql = "urn:schemas-microsoft-com:mapping-schema">
<xsd:element name = "samp_catalog" sql:is-constant = "1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "file" sql:relation = "files" maxOccurs = "unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "name" type = "xsd:string" sql:field = "name" />
<xsd:element name = "xyz" sql:is-constant = "1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "a_samp" sql:is-constant = "1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "a_one" type = "xsd:integer" sql:field = "a_one" />
<xsd:element name = "a_two" type = "xsd:integer" sql:field = "a_two" />
<xsd:element name = "a_three" type = "xsd:integer" sql:field = "a_three" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "b_samp" sql:is-constant = "1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = "b_four" type = "xsd:string" sql:field = "b_four" />
<xsd:element name = "b_five" type = "xsd:string" sql:field = "b_five" />
<xsd:element name = "b_six" type = "xsd:string" sql:field = "b_six" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Важным один является вторым data
элемента (type
ТЕЛЕФОН), но импортировать их все также приемлемо. Я попытался определить все 3 c_samp
s в схеме и определить sql:field
только для указанного элемента data
и определить его для всех элементов, однако импорт всегда приводит к NULL
для всего, что находится под элементом c_samp
.
Как я могу получить повторяющиеся узлы для импорта в базу данных?
Is этот вопрос решен? Вам нужна дополнительная помощь? Пожалуйста, дайте мне один намек: если этот вопрос будет решен, было бы очень любезно с вами, отметьте приемочную проверку ниже (лучший) ответчик голосов (может быть, ваш собственный ответ). Это будет 1) отметить эту проблему как решение 2) облегчить для последователей, чтобы найти лучшее решение 3) платить очки для ответчика и 4) платить очки вам. Как только вы пересечете границу с 15 пунктами, вы - дополнительно - попросите проголосовать за взносы. Это SO-способ сказать спасибо. Счастливое кодирование! – Shnugo