Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20033
Загрузить сильно, дай код сравнения ваших домов, и домов в фиасе?
С учётом версий и домов в ленмарке.
17 июн 16, 20:34    [19307184]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 20033
И интервалов домов
17 июн 16, 20:35    [19307189]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
dikium
Member

Откуда:
Сообщений: 1
Akina, а не подскажете сколько записей содержится в таблице House? А то я тут на ночь оставил процесс импорта, а с утра обнаружил что комп завис. В итоге у меня в таблице 18 328 237 записей. Хочу, вот, понять, завершился ли процесс импорта...

Спасибо!
31 май 17, 12:35    [20526918]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 15949
Понятия не имею. В любом случае я бы пересоздал таблицу и перезалил данные. А в промежутке ещё бы и файловую систему проверил...
31 май 17, 19:19    [20528771]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 12601
Почему в этой базе г. Москва числится как регион? (AOLEVEL = 1)
Московская область тоже регион.
Хотел сделать выбор региона/города, но москву как город не найти (если AOLEVEL 4)
16 июл 17, 10:12    [20647801]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Асланали
Member

Откуда: Республика Дагестан,Махачкала
Сообщений: 246
Akina, спасибо!
26 июл 17, 19:06    [20677720]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Асланали
Member

Откуда: Республика Дагестан,Махачкала
Сообщений: 246
Исходник проги на делфи не выложите тут?
Прошу прощения за наглость
26 июл 17, 19:21    [20677740]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 15949
Статья по теме: Как перейти от КЛАДР к ФИАС и ничего себе не сломать
26 июл 17, 20:49    [20677889]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
miksoft
Member

Откуда:
Сообщений: 36326
Тогда уж вдогонку:
ФИАС умер, да здравствует… да здравствует… да не понятно что пока
Смысла мало, депрессии много.
26 июл 17, 21:07    [20677922]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 15949
Ну "хоть что-то" всяко лучше, чем ничего, через какую бы задницу оно ни было.
27 июл 17, 21:44    [20681026]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
FLYERok
Member

Откуда:
Сообщений: 3
Здравствуйте!

Подскажите, пожалуйста, в чем может быть проблема:

Пытаюсь импортировать данные из файла AS_ADDROBJ.XML в таблицу addrobj. Всё пишется в таблицу, однако, вместо значений в яцейках пустота.

Использую команду

mysql> LOAD XML LOCAL INFILE '/Users/pavel/Desktop/testfias/AS_ADDROBJ.XML' INTO TABLE `addrobj` ROWS IDENTIFIED BY '<Object>';
Query OK, 3235532 rows affected, 65535 warnings (2 min 35,85 sec)
Records: 3235532  Deleted: 0  Skipped: 0  Warnings: 122950216


Использую последнюю на данный момент базу ФИАС с действующими с 2016 года схемой:
+ AS_ADDROBJ.xsd

<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by Буравцев_А (EMBRACE) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:usch="http://www.unisoftware.ru/schematron-extensions" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="AddressObjects">
<xs:annotation>
<xs:documentation>Состав и структура файла с информацией классификатора адресообразующих элементов БД ФИАС</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Object" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Классификатор адресообразующих элементов</xs:documentation>
</xs:annotation>
<xs:complexType>
<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>
<xs:attribute name="FORMALNAME" use="required">
<xs:annotation>
<xs:documentation>Формализованное наименование</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="REGIONCODE" use="required">
<xs:annotation>
<xs:documentation>Код региона</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="AUTOCODE" use="required">
<xs:annotation>
<xs:documentation>Код автономии</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="AREACODE" use="required">
<xs:annotation>
<xs:documentation>Код района</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CITYCODE" use="required">
<xs:annotation>
<xs:documentation>Код города</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CTARCODE" use="required">
<xs:annotation>
<xs:documentation>Код внутригородского района</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="PLACECODE" use="required">
<xs:annotation>
<xs:documentation>Код населенного пункта</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="STREETCODE" use="optional">
<xs:annotation>
<xs:documentation>Код улицы</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="EXTRCODE" use="required">
<xs:annotation>
<xs:documentation>Код дополнительного адресообразующего элемента</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SEXTCODE" use="required">
<xs:annotation>
<xs:documentation>Код подчиненного дополнительного адресообразующего элемента</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="OFFNAME" use="optional">
<xs:annotation>
<xs:documentation>Официальное наименование</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="POSTALCODE" use="optional">
<xs:annotation>
<xs:documentation>Почтовый индекс</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="6"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="IFNSFL" use="optional">
<xs:annotation>
<xs:documentation>Код ИФНС ФЛ</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TERRIFNSFL" use="optional">
<xs:annotation>
<xs:documentation>Код территориального участка ИФНС ФЛ</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="IFNSUL" use="optional">
<xs:annotation>
<xs:documentation>Код ИФНС ЮЛ</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TERRIFNSUL" use="optional">
<xs:annotation>
<xs:documentation>Код территориального участка ИФНС ЮЛ</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="OKATO" use="optional">
<xs:annotation>
<xs:documentation>OKATO</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="11"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="OKTMO" use="optional">
<xs:annotation>
<xs:documentation>OKTMO</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="8"/>
<xs:maxLength value="11"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="UPDATEDATE" type="xs:date" use="required">
<xs:annotation>
<xs:documentation>Дата внесения записи</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SHORTNAME" use="required">
<xs:annotation>
<xs:documentation>Краткое наименование типа объекта</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="AOLEVEL" use="required">
<xs:annotation>
<xs:documentation>Уровень адресного объекта </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="PARENTGUID" use="optional">
<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>
<xs:attribute name="AOID" 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>
<xs:attribute name="PREVID" use="optional">
<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>
<xs:attribute name="NEXTID" use="optional">
<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>
<xs:attribute name="CODE" use="optional">
<xs:annotation>
<xs:documentation>Код адресного объекта одной строкой с признаком актуальности из КЛАДР 4.0. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="17"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="PLAINCODE" use="optional">
<xs:annotation>
<xs:documentation>Код адресного объекта из КЛАДР 4.0 одной строкой без признака актуальности (последних двух цифр)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:maxLength value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ACTSTATUS" use="required">
<xs:annotation>
<xs:documentation>Статус исторической записи в жизненном цикле адресного объекта:
0 – не последняя
1 - последняя</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CENTSTATUS" use="required">
<xs:annotation>
<xs:documentation>Статус центра</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="OPERSTATUS" use="required">
<xs:annotation>
<xs:documentation>Статус действия над записью – причина появления записи (см. описание таблицы OperationStatus):
01 – Инициация;
10 – Добавление;
20 – Изменение;
21 – Групповое изменение;
30 – Удаление;
31 - Удаление вследствие удаления вышестоящего объекта;
40 – Присоединение адресного объекта (слияние);
41 – Переподчинение вследствие слияния вышестоящего объекта;
42 - Прекращение существования вследствие присоединения к другому адресному объекту;
43 - Создание нового адресного объекта в результате слияния адресных объектов;
50 – Переподчинение;
51 – Переподчинение вследствие переподчинения вышестоящего объекта;
60 – Прекращение существования вследствие дробления;
61 – Создание нового адресного объекта в результате дробления
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CURRSTATUS" use="required">
<xs:annotation>
<xs:documentation>Статус актуальности КЛАДР 4 (последние две цифры в коде)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="STARTDATE" type="xs:date" use="required">
<xs:annotation>
<xs:documentation>Начало действия записи</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ENDDATE" type="xs:date" use="required">
<xs:annotation>
<xs:documentation>Окончание действия записи</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NORMDOC" use="optional">
<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>
<xs:attribute name="LIVESTATUS" use="required">
<xs:annotation>
<xs:documentation>Признак действующего адресного объекта</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CADNUM" use="optional">
<xs:annotation>
<xs:documentation>Кадастровый номер</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="DIVTYPE" use="required">
<xs:annotation>
<xs:documentation>Тип адресации:
0 - не определено
1 - муниципальный;
2 - административно-территориальный</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>



Сама таблица выглядит так.
+ addrobj.sql

CREATE TABLE `addrobj` (
`aoguid` varchar(36) NOT NULL,
`formalname` varchar(120) NOT NULL COMMENT 'Формализованное наименование',
`regioncode` varchar(2) NOT NULL COMMENT 'Код региона',
`autocode` varchar(1) NOT NULL COMMENT 'Код автономии',
`areacode` varchar(3) NOT NULL COMMENT 'Код района',
`citycode` varchar(3) NOT NULL COMMENT 'Код города',
`ctarcode` varchar(3) NOT NULL COMMENT 'Код внутригородского района',
`placecode` varchar(3) NOT NULL COMMENT 'Код населенного пункта',
`streetcode` varchar(4) NOT NULL COMMENT 'Код улицы',
`extrcode` varchar(4) NOT NULL COMMENT 'Код дополнительного адресообразующего элемента',
`sextcode` varchar(3) NOT NULL COMMENT 'Код подчиненного дополнительного адресообразующего элемента',
`offname` varchar(120) NOT NULL COMMENT 'Официальное наименование',
`postalcode` char(6) NOT NULL COMMENT 'Почтовый индекс',
`ifnsfl` varchar(4) NOT NULL COMMENT 'Код ИФНС ФЛ',
`terrifnsfl` varchar(4) NOT NULL COMMENT 'Код территориального участка ИФНС ФЛ',
`ifnsul` varchar(4) NOT NULL COMMENT 'Код ИФНС ЮЛ',
`terrifnsul` varchar(4) NOT NULL COMMENT 'Код территориального участка ИФНС ЮЛ',
`okato` varchar(11) NOT NULL COMMENT 'ОКАТО',
`oktmo` varchar(11) NOT NULL COMMENT 'ОКТМО',
`updatedate` date NOT NULL COMMENT 'Дата внесения записи',
`shortname` varchar(10) NOT NULL COMMENT 'Краткое наименование типа объекта',
`aolevel` int(10) UNSIGNED NOT NULL COMMENT 'Уровень адресного объекта ',
`parentguid` char(36) NOT NULL COMMENT 'Идентификатор объекта родительского объекта',
`aoid` varchar(36) NOT NULL,
`previd` varchar(36) NOT NULL COMMENT 'Идентификатор записи связывания с предыдушей исторической записью',
`nextid` varchar(36) NOT NULL COMMENT 'Идентификатор записи связывания с последующей исторической записью',
`code` varchar(17) NOT NULL COMMENT 'Код адресного объекта одной строкой с признаком актуальности из КЛАДР 4.0',
`plaincode` varchar(15) NOT NULL COMMENT 'Код адресного объекта из КЛАДР 4.0 одной строкой без признака актуальности (последних двух цифр)',
`actstatus` tinyint(10) UNSIGNED NOT NULL COMMENT 'Статус актуальности адресного объекта ФИАС. Актуальный адрес на текущую дату. Обычно последняя запись об адресном объекте.',
`centstatus` int(10) UNSIGNED NOT NULL COMMENT 'Статус центра',
`operstatus` int(10) UNSIGNED NOT NULL COMMENT 'Статус действия над записью – причина появления записи',
`currstatus` int(10) UNSIGNED NOT NULL COMMENT 'Статус актуальности КЛАДР 4 (последние две цифры в коде)',
`startdate` date NOT NULL COMMENT 'Начало действия записи',
`enddate` date NOT NULL COMMENT 'Окончание действия записи',
`normdoc` varchar(36) NOT NULL COMMENT 'Внешний ключ на нормативный документ',
`livestatus` int(1) NOT NULL,
`cadnum` varchar(100) NOT NULL,
`divtype` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Классификатор адресообразующих элементов';


Пробовал на разных машинах с разной конфигурацией MySQL, результат один и тот же.

Хотя, с другим XML файлом StructureStatus.XML для более простой таблицы всё проходит на УРА:
LOAD XML LOCAL INFILE '/Users/pavel/Desktop/testfias/AS_STRSTAT.XML' INTO TABLE `StructureStatus` ROWS IDENTIFIED BY '<StructureStatus>';


+ AS_STRSTAT.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:usch="http://www.unisoftware.ru/schematron-extensions" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="StructureStatuses">
<xs:annotation>
<xs:documentation>Состав и структура файла с информацией по признакам строения в БД ФИАС</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="StructureStatus" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Признак строения</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="STRSTATID" use="required">
<xs:annotation>
<xs:documentation>Признак строения</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="NAME" use="required">
<xs:annotation>
<xs:documentation>Наименование</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SHORTNAME" use="optional">
<xs:annotation>
<xs:documentation>Краткое наименование</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>



Видимо MySQL при парсинге XML файла просто не находит нужные значения.

Подскажите, пожалуйста, как решить эту проблему.

Спасибо!
31 июл 17, 12:58    [20687622]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 12601
автор
Records: 3235532 Deleted: 0 Skipped: 0 Warnings: 122950216


SHOW WARNINGS;
31 июл 17, 13:07    [20687658]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
FLYERok
Member

Откуда:
Сообщений: 3
Hett, SHOW WARNINGS выдает для всех столбцов:
Column set to default value; NULL supplied to NOT NULL column


+ SHOW WARNINGS;
.
mysql> SHOW WARNINGS;
+---------+------+-------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------------------------------------------+
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'aoguid' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'formalname' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'regioncode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'autocode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'areacode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'citycode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'ctarcode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'placecode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'streetcode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'extrcode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'sextcode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'offname' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'postalcode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'ifnsfl' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'terrifnsfl' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'ifnsul' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'terrifnsul' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'okato' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'oktmo' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'updatedate' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'shortname' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'aolevel' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'parentguid' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'aoid' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'previd' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'nextid' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'code' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'plaincode' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'actstatus' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'centstatus' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'operstatus' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'currstatus' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'startdate' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'enddate' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'normdoc' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'livestatus' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'cadnum' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'divtype' at row 1 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'aoguid' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'formalname' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'regioncode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'autocode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'areacode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'citycode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'ctarcode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'placecode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'streetcode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'extrcode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'sextcode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'offname' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'postalcode' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'ifnsfl' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'terrifnsfl' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'ifnsul' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'terrifnsul' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'okato' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'oktmo' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'updatedate' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'shortname' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'aolevel' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'parentguid' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'aoid' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'previd' at row 2 |
| Warning | 1263 | Column set to default value; NULL supplied to NOT NULL column 'nextid' at row 2 |
+---------+------+-------------------------------------------------------------------------------------+
64 rows in set (0,00 sec)
31 июл 17, 13:36    [20687797]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
FLYERok
Member

Откуда:
Сообщений: 3
Hett, Проблема оказалась в том, что имя XML-тега должно полностью соответствовать названию в таблице с учетом регистра. В моем случае в значения полей в таблице оказались в нижнем регистре.
31 июл 17, 14:40    [20688245]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 12601
У меня была такая мысль, но подумалось, что MySQL не регистрозависим в названиях таблиц, полей, операторов....
31 июл 17, 14:41    [20688262]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 15949
FLYERok
Проблема оказалась в том, что имя XML-тега должно полностью соответствовать названию в таблице с учетом регистра.
Ну вообще-то это установлено стандартом. Это чтобы получить регистронезависимость - надо поизвращаться (ассертом там в схеме или ещё как).
31 июл 17, 15:33    [20688643]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Бакеев Дамир
Member

Откуда:
Сообщений: 11
Всем привет. встала задача загрузки FIAS в локальную базу Oracle и MySQL, т.к. в XML формате очень много грузить а нужно только один сфой регион было принято решение грузить из DBF т.к. на просторах интернета готового не нашел написал свой класс для загрузки DBF в MySQL, в дальнейшем буду дорабатывать для загрузки в Oracle.

опубликовал всё GitHab


<?php
	header('Content-type: text/html; charset=utf-8');
	class DBFLoader {
		
		private $Files;
		private $HeaderArray;
		private $FileCSV;
		
		public function __construct($DBF){
			if (!extension_loaded('dbase')) throw new Exception('Не найдено расширение dbase. подключите библиотеку');
			if(!$this -> FindDBF($DBF)) throw new Exception('Не найдено DBF файлов для обработки');
			$this ->TMPFolter = str_replace('\\', '/', sys_get_temp_dir().'/DBFLoader/');
			if (!is_dir($this ->TMPFolter)) mkdir($this ->TMPFolter);
		}
		
		public function __destruct() {
			foreach ($this -> files as $file) {
				$fileParts = explode( '/', $file);
				@unlink($this ->TMPFolter.preg_replace( '~\.[a-z]+$~i', '.csv', $fileParts[key( array_slice( $fileParts, -1, 1, true ) )] ));
			}
		}
		
		private Function FindDBF($Paths){
			if (!is_array($Paths)) 
				$Paths = explode (';', str_replace('\\', '/', $Paths));
			$this -> files =array();
			foreach($Paths as $Path_K => $Path_V){
				if (is_dir($Path_V))
					$this -> files = array_merge($this -> files, glob( $Path_V.'/*.DBF'));
				elseif (!empty($Path_V))
						$this -> files [] = $Path_V;
			}
			return ((count($this -> files)!=0)?True:false);
		}
		
		public Function Convert($ToBase){
			ini_set( 'memory_limit', '-1' );
			set_time_limit(0);
			foreach ($this -> files as $file) {
echo '<pre>'.var_export($file, true).'<pre>';
				if ($this ->ConvertDBF2CSV($file))
					if (!Empty($ToBase['MYSQL'])) $this ->Load_CSV4MySQL($ToBase['MYSQL']);
			}
		}
		
		private Function ConvertDBF2CSV($FileDBF, $FileCSV=''){
			if ($dbf = dbase_open($FileDBF, 0)) {
				if (Empty($FileCSV)) {
					$fileParts = explode( '/', $FileDBF );
					$endPart = $fileParts[key( array_slice( $fileParts, -1, 1, true ) )];
					$this ->FileCSV = $this ->TMPFolter.preg_replace( '~\.[a-z]+$~i', '.csv', $endPart );
				}
				else $this ->FileCSV = FileCSV;
				$num_rec = dbase_numrecords( $dbf );
				$NewCSV = '';
				for( $i = 1; $i <= $num_rec; $i++ ){
					$row = @dbase_get_record_with_names( $dbf, $i );
					$firstKey = key( array_slice( $row, 0, 1, true ) );
					foreach( $row as $key => $val ){
						if( $key == 'deleted' ) continue;
						if( $firstKey != $key ) $NewCSV .= '|';
						$NewCSV .= iconv("CP866", "UTF-8", trim( $val ));
					};
					$NewCSV .= "\n";
				};
				file_put_contents($this ->FileCSV, $NewCSV);
				$this -> HeaderArray = dbase_get_header_info($dbf);
				dbase_close($dbf);
				return true;
			} else {
				return False;
			}
		}
		
		private Function Load_CSV4MySQL($param){
// ------------------------------------			echo '<pre>'.var_export($param, true).'<pre>';
			$TypeBase = array (
				'number' => array('INTEGER'),
				'character' => array('VARCHAR', true),
				'date' => array('DATE'),
				'memo' => array('TEXT'),
			);
			$fileParts = explode( '/', $this ->FileCSV );
			
			$TableName=preg_replace( '~\.[a-z]+$~i', '', $fileParts[key( array_slice( $fileParts, -1, 1, true ) )] );
			if ($wpdb = new mysqli($param['host'], $param['user'], $param['pass'], $param['base'])) {
				
				$SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS '.$TableName.' ( ';
				foreach( $this -> HeaderArray as $key => $val ){
					$SQL_CREATE_TABLE .=	' `'.$val['name'].'` '.
								$TypeBase[$val['type']][0].
								(!empty($TypeBase[$val['type']][1]) ? '('.$val['length'].')' :'').
								((Count($this -> HeaderArray)-1!=$key)?',':'');
				};
				$SQL_CREATE_TABLE .= ') ENGINE=MyISAM';
				
				if ( !$wpdb->query($SQL_CREATE_TABLE) )
					exit('error:'. $wpdb->error);
				
				$sql = "LOAD DATA LOCAL INFILE '".$this ->FileCSV."'"; 
				$sql .= " INTO TABLE ".$TableName." ";
				$sql .= " CHARACTER SET utf8"; 
				$sql .= " FIELDS TERMINATED BY '|'"; 
				
				if ( !$wpdb->query($sql) )
					exit('error:'. $wpdb->error);
			}
		}
	}
25 авг 17, 12:05    [20748921]     Ответить | Цитировать Сообщить модератору
 Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
Бакеев Дамир
Member

Откуда:
Сообщений: 11
кстати забыл
  • файл запуска положить
  • написать что почему-то не открывается файлы типа "NORDOC02.DBF"
  • для работы необходимо в системе скачать и подключить библиотеку php_dbase.dll в файле "php.ini" строку "extension=php_dbase.dll"

    + Файл запуска
    	include 'DBFLoader.class.php';
    	$qweqwe = new DBFLoader('D:\WWW\fgbu02\fias_dbf');
    	$qweqwe -> Convert(array('MYSQL'=>array('host'=>"localhost",'user'=>"root", 'pass'=>"root", 'base'=>"fias")));
    
  • 25 авг 17, 12:46    [20749049]     Ответить | Цитировать Сообщить модератору
     Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
    Андрей15
    Member

    Откуда:
    Сообщений: 2
    Доброго всем дня,

    появилась необходимость импорта ФИАС. перечитал кучу инфы и вариантов импорта, но .... ничего не получается :(
    1. примеры из первого поста - увы уже не актуальны, найти нормальной инфы по импорту XSD схем - наверно плохо искал :( но не нашел.
    2. при импорте происходит оооооооочень долгая загрузка. так напаример ADDROBJ.XML у меня так и не грузится, примерно через час в консоли выдает ошибку "ERROR 2013 (HY000): Lost connection to MySQL server during query" - я так понимаю это ограничение на выполнение скрипта, при неоднократных попытках, я увеличивал время выполнения, но даже этот файл у меня грузился больше 20 часов после чего либо приходилось останавливать, либо банально свет выключали :(
    программкой что в этой ветке - ADDROBJ.XML не делится на части - на выходе получается один файл.
    памяти на серваке мало :( 1 гиг стоит убунта 16.04 и mysql 5.7 до эксперементов стоял 5.6 с базой фиас от 2014 года сейчас стоит задача поставить актуальную базу.
    подскажите гуру как при текущих условиях это сделать в разумные сроки - и вообще какие при моей конфигурации "сервака" можно считать разумными?
    6 сен 17, 04:26    [20774237]     Ответить | Цитировать Сообщить модератору
     Re: Импорт БД ФИАС в MySQL. Практический опыт.  [new]
    Андрей15
    Member

    Откуда:
    Сообщений: 2
    ps
    пробовал импортировать dbf по своему региону из последних постов, но и он в базу пишет абракадабру - насколько я понял в базу почему-то попадают записи в кодировке cp1251 - но почему это происходит - мне так и не понятно
    6 сен 17, 04:28    [20774238]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
    Все форумы / MySQL Ответить