Имя: Пароль:
IT
Админ
Загрузка классификатора ФИАС в MS SQL
0 АЛьФ
 
23.04.19
16:54
Загружаю ФИАС из XML в SQL. Все нормально, но вот строковые элементы почему-то все формируют колонки с типом "nvarchar(1000)", хотя в xsd есть описание типа такого:
<xs:attribute name="AOGUID" use="required">
    <xs:annotation>
        <xs:documentation>Глобальный уникальный идентификатор адресного объекта </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:length value="36"/>
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

Насколько я понимаю, длина явно задана.
Кто-нибудь с таким сталкивался? Есть решение без явного указания типа через "sql:datatype"? Полдня убил в поисковиках.
1 АЛьФ
 
24.04.19
08:49
Решение так и не найдено.
2 trad
 
24.04.19
09:38
видимо алгоритм, который создает структуру таблицу, в схему не очень смотрит
3 АЛьФ
 
24.04.19
10:48
2(2) Таблицы создаются и загружается XML с помощь spXMLBulkLoad. Вроде как ни у кого, судя по форумам, проблем с ней не возникало.
4 АЛьФ
 
24.04.19
11:56
Надежда на подсказку еще теплится...
5 trad
 
24.04.19
12:39
как я понял их этого
https://docs.microsoft.com/ru-ru/previous-versions/sql/sql-server-2005/ms172715(v%3dsql.90)
https://docs.microsoft.com/ru-ru/previous-versions/sql/sql-server-2005/ms172634(v%3dsql.90)
- bulk load с типами особо не заморачивается
имхо твой путь - создавать таблицы с нужной тебе структурой перед загрузкой
6 АЛьФ
 
24.04.19
12:57
2(5) Первая ссылка на 404. Вторая о преобразовании типов, это я читал.
Если создавать таблицы со свой структурой, то получится как-то:
- создаем свои таблицы;
- грузим xml в создаваемые автоматом таблицы;
- переносим загруженные данные в свои таблицы.

Вот этого всего геморроя и хотелось бы избежать. Но по всему выходит, что придется капитально корректировать xsd.
7 trad
 
24.04.19
13:10
(6) Первая ссылка на 404.
это косорукая миста
скопируй строку, а не кликай (в ссылку скобка не попала)
8 АЛьФ
 
24.04.19
13:12
2(7) Да, спасибо. Отвык от местного движка.
9 trad
 
24.04.19
13:20
(6) "- создаем свои таблицы;
- грузим xml в создаваемые автоматом таблицы;
- переносим загруженные данные в свои таблицы. "
а разве он не загрузит в твои таблицы если они будут называться должным образом?
10 АЛьФ
 
24.04.19
17:34
2(9) Нет, он пересоздает таблицы.
11 trad
 
24.04.19
19:00
А текст хранимки где взял?
Я среди штатных не нашел
12 zehn
 
24.04.19
19:14
(10) Если речь про https://docs.microsoft.com/en-us/sql/relational-databases/sqlxml-annotated-xsd-schemas-xpath-queries/bulk-load-xml/sql-server-xml-bulk-load-object-model-sqlxml-4-0?view=sql-server-2017 то там есть SchemaGen и SGDropTables, которые при установках по умолчанию вроде ичего не создают.
Что за spXMLBulkLoad?
13 Сияющий в темноте
 
24.04.19
22:09
Просто,расчет на тех,у кого типа гуид нету,а почему строки такого типа,нужно спрашивать у самого sql,но при загрузке 36 символов,вроде как место должно выделяться под 38,то есть ц на размер.
а научить понимать гуиды-это свою загрузку писать.
14 АЛьФ
 
25.04.19
10:03
spXMLBulkLoad взял в теме загрузки ФИАС в SQL на sql.ru. Простенькая процедурка, просто обертка вокруг объекта "SQLXMLBulkLoad.SQLXMLBulkload".
Короче, прописал в xsd типы напрямую с помощью "sql:datatype".