powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с XML Data Source (SSIS)
17 сообщений из 17, страница 1 из 1
Проблема с XML Data Source (SSIS)
    #39919953
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем источник XML Data Source c валидацией по схеме.

схема XSD
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="LIST_HEADER">
		<xs:complexType>
			<xs:sequence>
				<xs:element type="xs:date" name="DATE" maxOccurs="1" minOccurs="1"/>
...
					<xs:complexType>
...


файл XML
Код: xml
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="WINDOWS-1251" ?>
<LIST_HEADER>
<DATE>2019-05-31</DATE>
...
<HEADER>
...



В "Input Output Properties" не вижу выхода LIST_HEADER!
Если сделать
Код: xml
1.
<xs:element name="LIST_HEADER" minOccurs="1">


То на выходе HEADER появляется DATA (?), но сам компонент начинает ругаться, типа нельзя так делать.
"minOccurs cannot be present"
Что я делаю не так?

Задача - вытащить дату из компонента.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39919966
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка

То на выходе HEADER появляется DATA (?), но сам компонент начинает ругаться, типа нельзя так делать.
"minOccurs cannot be present"

это сам накосячил.

Но проблема осталась, не могу вытащить поле DATE.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920039
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

покажите целостный документ, а не нарезку.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920048
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов, документ очень большой.
И, кроме того, конфиденциальный.
Не читается только LIST_HEADER, все вложенные узла и валидируются и считываются без проблем.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920064
Borodat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,
А сгенерить xsd средствами ssis?
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920067
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Borodat
SQL2008,
А сгенерить xsd средствами ssis?

Пока не вариант. Формировал, но там придется руками править длину полей и мапинг весь слетит.
Если ничего не останется, то вернусь к этому.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920076
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обезличил данные.

Модератор: Используйте тег spoiler
Схема
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="LIST_HEADER">
		<xs:complexType>
			<xs:sequence>
				<xs:element type="xs:string" name="TITLE" maxOccurs="1" minOccurs="1">
				</xs:element>
				<xs:element type="xs:string" name="ORG_NAME" maxOccurs="1" minOccurs="1">
				</xs:element>
				<xs:element type="xs:date" name="DATE" maxOccurs="1" minOccurs="1">
				</xs:element>
				<xs:element type="xs:string" name="RATE" maxOccurs="1" minOccurs="1">
				</xs:element>
				<xs:element name="HEADER" maxOccurs="1" minOccurs="1">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="LIST_SECTIONS" maxOccurs="1" minOccurs="1">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="SECTION" maxOccurs="unbounded" minOccurs="0">
											<xs:complexType>
												<xs:sequence>
													<xs:element type="xs:integer" name="PPL_ID" maxOccurs="1" minOccurs="1">
														
													</xs:element>
													<xs:element name="PPL_REG_NUMBER" maxOccurs="1" minOccurs="1">
														 
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="100"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>
													<xs:element type="xs:date" name="PPL_REG_DATE" maxOccurs="1" minOccurs="1">
														
													</xs:element>
													<xs:element type="xs:decimal" name="PPL_AMOUNT" maxOccurs="1" minOccurs="1">
														 
													</xs:element>
													<xs:element name="PPL_DB_CR" maxOccurs="1" minOccurs="0">
														
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="50"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>                          
													<xs:element type="xs:string" name="PPL_SND_ACCOUNT" maxOccurs="1" minOccurs="0">
														 
													</xs:element>
													<xs:element name="PPL_SND_INN" maxOccurs="1" minOccurs="0">
														
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="100"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>
													<xs:element name="PPL_SND_CPP" maxOccurs="1" minOccurs="0">
														
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="100"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>
													<xs:element name="PPL_SND_NAME" maxOccurs="1" minOccurs="0">
														
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="4000"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>
													<xs:element type="xs:string" name="PPL_SND_BNK_BIC" maxOccurs="1" minOccurs="0">
														
													</xs:element>
													<xs:element type="xs:string" name="PPL_SND_BNK_ACCOUNT" maxOccurs="1" minOccurs="0">
														
													</xs:element>
													<xs:element type="xs:string" name="PPL_RCV_ACCOUNT" maxOccurs="1" minOccurs="0">
														
													</xs:element>
													<xs:element name="PPL_RCV_INN" maxOccurs="1" minOccurs="0">
														
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="100"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>
													<xs:element name="PPL_RCV_CPP" maxOccurs="1" minOccurs="0">
														
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="100"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>
													<xs:element name="PPL_RCV_NAME" maxOccurs="1" minOccurs="0">
														
														<xs:simpleType>
															<xs:restriction base="xs:string">
																<xs:maxLength value="4000"/>
															</xs:restriction>
														</xs:simpleType>													
													</xs:element>
													<xs:element type="xs:string" name="PPL_RCV_BNK_BIC" maxOccurs="1" minOccurs="0">
														
													</xs:element>
													<xs:element type="xs:string" name="PPL_RCV_BNK_ACCOUNT" maxOccurs="1" minOccurs="0">
														
													</xs:element>
													<xs:element type="xs:string" name="PPL_PURPOSE" maxOccurs="1" minOccurs="0">
														
													</xs:element>
													<xs:element name="LIST_LINES" maxOccurs="1" minOccurs="1">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="LINE" maxOccurs="unbounded" minOccurs="0">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element type="xs:date" name="PPL_LINE_OPERTIONAL_DAY" maxOccurs="1" minOccurs="1">
																				
																			</xs:element>
																			<xs:element type="xs:string" name="PPL_LINE_DB_CR" maxOccurs="1" minOccurs="1">  
																				
																			</xs:element>
																			<xs:element type="xs:string"  name="PPL_LINE_KBK" maxOccurs="1" minOccurs="1">
																				
																			</xs:element>
																			<xs:element type="xs:decimal" name="PPL_LINE_AMOUNT" maxOccurs="1" minOccurs="1">
																				
																			</xs:element>
																			<xs:element type="xs:integer" name="PPL_LINE_BOB_ID" maxOccurs="1" minOccurs="0">
																				
																			</xs:element>
																		</xs:sequence>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>


...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920078
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри... удалите предыдущее
Модератор: Удалил.
Вообще, есть редактирование своих сообщений (кнопка "изменить" внизу сообщения), доступное в первые 15 минут после публикации

Данные
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<?xml version="1.0" encoding="WINDOWS-1251" ?>
<LIST_HEADER>
<TITLE>****************************</TITLE>
<ORG_NAME>***********</ORG_NAME>
<DATE>2019-05-31</DATE>
<RATE>****</RATE>
<HEADER>
<LIST_SECTIONS>
<SECTION>
<PPL_ID>12345678901</PPL_ID>
<PPL_REG_NUMBER>000</PPL_REG_NUMBER>
<PPL_REG_DATE>2019-04-30</PPL_REG_DATE>
<PPL_AMOUNT>9999999</PPL_AMOUNT>
<PPL_DB_CR>DB</PPL_DB_CR>
<PPL_SND_ACCOUNT>0000000000000000</PPL_SND_ACCOUNT>
<PPL_SND_INN>7777777777</PPL_SND_INN>
<PPL_SND_CPP>777777777</PPL_SND_CPP>
<PPL_SND_NAME>***************************************************************************************************************************************</PPL_SND_NAME>
<PPL_SND_BNK_BIC>000000000</PPL_SND_BNK_BIC>
<PPL_SND_BNK_ACCOUNT>44444444444444444444</PPL_SND_BNK_ACCOUNT>
<PPL_RCV_INN>7777777777</PPL_RCV_INN>
<PPL_RCV_CPP>999999999</PPL_RCV_CPP>
<PPL_RCV_NAME>AAAAAAAA</PPL_RCV_NAME>
<PPL_RCV_BNK_BIC>444444444</PPL_RCV_BNK_BIC>
<PPL_RCV_BNK_ACCOUNT>11111111111111111111</PPL_RCV_BNK_ACCOUNT>
<PPL_PURPOSE>********************************************************************************</PPL_PURPOSE>
<LIST_LINES>
<LINE>
<PPL_LINE_OPERTIONAL_DAY>2019-05-06</PPL_LINE_OPERTIONAL_DAY>
<PPL_LINE_DB_CR>DB</PPL_LINE_DB_CR>
<PPL_LINE_KBK>888888888888888888888888888888888888</PPL_LINE_KBK>
<PPL_LINE_AMOUNT>0000000</PPL_LINE_AMOUNT>
<PPL_LINE_BOB_ID>12345678901</PPL_LINE_BOB_ID>
</LINE>
</LIST_LINES>
</SECTION>
</LIST_SECTIONS>
</HEADER>
</LIST_HEADER>

...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920080
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сгенерированная схема
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="LIST_HEADER">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" name="TITLE" type="xs:string" />
        <xs:element minOccurs="0" name="ORG_NAME" type="xs:string" />
        <xs:element minOccurs="0" name="DATE" type="xs:date" />
        <xs:element minOccurs="0" name="RATE" type="xs:string" />
        <xs:element minOccurs="0" name="HEADER">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="LIST_SECTIONS">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="SECTION">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" name="PPL_ID" type="xs:unsignedLong" />
                          <xs:element minOccurs="0" name="PPL_REG_NUMBER" type="xs:string" />
                          <xs:element minOccurs="0" name="PPL_REG_DATE" type="xs:date" />
                          <xs:element minOccurs="0" name="PPL_AMOUNT" type="xs:decimal" />
                          <xs:element minOccurs="0" name="PPL_DB_CR" type="xs:string" />
                          <xs:element minOccurs="0" name="PPL_SND_ACCOUNT" type="xs:unsignedLong" />
                          <xs:element minOccurs="0" name="PPL_SND_INN" type="xs:unsignedLong" />
                          <xs:element minOccurs="0" name="PPL_SND_CPP" type="xs:unsignedInt" />
                          <xs:element minOccurs="0" name="PPL_SND_NAME" type="xs:string" />
                          <xs:element minOccurs="0" name="PPL_SND_BNK_BIC" type="xs:unsignedInt" />
                          <xs:element minOccurs="0" name="PPL_SND_BNK_ACCOUNT" type="xs:integer" />
                          <xs:element minOccurs="0" name="PPL_RCV_ACCOUNT" type="xs:unsignedLong" />
                          <xs:element minOccurs="0" name="PPL_RCV_INN" type="xs:unsignedLong" />
                          <xs:element minOccurs="0" name="PPL_RCV_CPP" type="xs:unsignedInt" />
                          <xs:element minOccurs="0" name="PPL_RCV_NAME" type="xs:string" />
                          <xs:element minOccurs="0" name="PPL_RCV_BNK_BIC" type="xs:unsignedInt" />
                          <xs:element minOccurs="0" name="PPL_RCV_BNK_ACCOUNT" type="xs:integer" />
                          <xs:element minOccurs="0" name="PPL_PURPOSE" type="xs:string" />
                          <xs:element minOccurs="0" name="LIST_LINES">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" name="LINE">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element minOccurs="0" name="PPL_LINE_OPERTIONAL_DAY" type="xs:date" />
                                      <xs:element minOccurs="0" name="PPL_LINE_DB_CR" type="xs:string" />
                                      <xs:element minOccurs="0" name="PPL_LINE_KBK" type="xs:string" />
                                      <xs:element minOccurs="0" name="PPL_LINE_AMOUNT" type="xs:decimal" />
                                      <xs:element minOccurs="0" name="PPL_LINE_BOB_ID" type="xs:unsignedLong" />
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920083
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор
Вообще, есть редактирование своих сообщений (кнопка "изменить" внизу сообщения), доступное в первые 15 минут после публикации

Раньше не было, вот по привычке и написал :)
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920090
Borodat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,
Советую изменить на string тип у ИНН, КПП и счетов. И на этом редактирование закончить.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920097
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Borodat
SQL2008,
Советую изменить на string тип у ИНН, КПП и счетов. И на этом редактирование закончить.

И при попытке вставить в поле длиной 50 символов значение из XML по умолчанию 255 получить ошибку?
Можно конечно настроит выходы, но при каждом рефреше все это слетает... Нет уж!

И потом это не решает моей проблемы
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920179
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

действительно, с такой структурой не работает. Возможно, здесь "заточено" на реляционное представление, т.е. должна быть, как минимум, одна вложенная группа элементов, чтобы есть присвоить условный уникальный идентификатор.

Например, вот это будет работать:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?xml version="1.0" encoding="WINDOWS-1251" ?>
<LIST_HEADER>
<LIST_HEADER_DATA>
<TITLE>****************************</TITLE>
<ORG_NAME>***********</ORG_NAME>
<DATE>2019-05-31</DATE>
<RATE>****</RATE>
</LIST_HEADER_DATA>
<HEADER>
<ECT>***</ECT>
<ECT>***</ECT>
</HEADER>
</LIST_HEADER>



После преобразований в моем примере получится две таблицы LIST_HEADER_DATA и HEADER, для каждой которых будет создан внутренний ключ, колонка с окончанием _id. Каждая из строк ECT может быть определена однозначно при организации цикла по набору данных.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920189
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов, спасибо.
Пошел по другому пути - переписываю пакет SSIS.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920367
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

Радикальный подход. Хотя для решения проблемы достаточно "обернуть" XML в теги, например:

<?xml version="1.0" encoding="WINDOWS-1251" ?>
<TOP>
<LIST_HEADER>
...
</LIST_HEADER>
</TOP>
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920942
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
SQL2008,

Радикальный подход. Хотя для решения проблемы достаточно "обернуть" XML в теги, например:

<?xml version="1.0" encoding="WINDOWS-1251" ?>
<TOP>
<LIST_HEADER>
...
</LIST_HEADER>
</TOP>

Увы. Файлов порядка 1000, не назаворачиваешься.
Написал скрипт, который получает на вход файл, парсит XML и сохраняет дату в переменную.
Вопрос решен.
...
Рейтинг: 0 / 0
Проблема с XML Data Source (SSIS)
    #39920946
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот код скрипта, может кому пригодится.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public void Main()
	{
            Dts.VariableDispenser.LockForRead("User::fileNameXml");
            Dts.VariableDispenser.LockForWrite("User::exportDate");
            string fileXML = Dts.Variables["User::fileNameXml"].Value.ToString(); ;
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(fileXML);

            XmlElement xRoot = xDoc.DocumentElement;
            foreach (XmlNode xnode in xRoot)
            {
                if (xnode.Name == "DATE")
                {
                    Dts.Variables["User::exportDate"].Value = xnode.InnerText.ToString();
                    Dts.TaskResult = (int)ScriptResults.Success;
                    return;
                }
            }
            Dts.TaskResult = (int)ScriptResults.Failure;
        }


И вся головная боль :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с XML Data Source (SSIS)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]