Вход | Регистрация
 
Информационные технологии :: Администрирование

Загрузка классификатора ФИАС в MS SQL

Загрузка классификатора ФИАС в MS SQL
Я
   АЛьФ
 
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
Решение так и не найдено.
   trad
 
2 - 24.04.19 - 09:38
видимо алгоритм, который создает структуру таблицу, в схему не очень смотрит
   АЛьФ
 
3 - 24.04.19 - 10:48
2(2) Таблицы создаются и загружается XML с помощь spXMLBulkLoad. Вроде как ни у кого, судя по форумам, проблем с ней не возникало.
   АЛьФ
 
4 - 24.04.19 - 11:56
Надежда на подсказку еще теплится...
   trad
 
5 - 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.
   trad
 
7 - 24.04.19 - 13:10
(6) Первая ссылка на 404.
это косорукая миста
скопируй строку, а не кликай (в ссылку скобка не попала)
   АЛьФ
 
8 - 24.04.19 - 13:12
2(7) Да, спасибо. Отвык от местного движка.
   trad
 
9 - 24.04.19 - 13:20
(6) "- создаем свои таблицы;
- грузим xml в создаваемые автоматом таблицы;
- переносим загруженные данные в свои таблицы. "
а разве он не загрузит в твои таблицы если они будут называться должным образом?
   АЛьФ
 
10 - 24.04.19 - 17:34
2(9) Нет, он пересоздает таблицы.
   trad
 
11 - 24.04.19 - 19:00
А текст хранимки где взял?
Я среди штатных не нашел
   zehn
 
12 - 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".

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.