powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Импорт БД ФИАС в MySQL. Практический опыт.
23 сообщений из 48, страница 2 из 2
Импорт БД ФИАС в MySQL. Практический опыт.
    #39258126
Фотография sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загрузить сильно, дай код сравнения ваших домов, и домов в фиасе?
С учётом версий и домов в ленмарке.
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39258128
Фотография sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И интервалов домов
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39463008
dikium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, а не подскажете сколько записей содержится в таблице House? А то я тут на ночь оставил процесс импорта, а с утра обнаружил что комп завис. В итоге у меня в таблице 18 328 237 записей. Хочу, вот, понять, завершился ли процесс импорта...

Спасибо!
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39463333
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятия не имею. В любом случае я бы пересоздал таблицу и перезалил данные. А в промежутке ещё бы и файловую систему проверил...
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39489653
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему в этой базе г. Москва числится как регион? (AOLEVEL = 1)
Московская область тоже регион.
Хотел сделать выбор региона/города, но москву как город не найти (если AOLEVEL 4)
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39495539
Асланали
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, спасибо!
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39495545
Асланали
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходник проги на делфи не выложите тут?
Прошу прощения за наглость
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39495574
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39495582
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уж вдогонку:
ФИАС умер, да здравствует… да здравствует… да не понятно что пока
Смысла мало, депрессии много.
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39496325
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну "хоть что-то" всяко лучше, чем ничего, через какую бы задницу оно ни было.
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39497710
FLYERok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

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

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

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

Код: sql
1.
2.
3.
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 для более простой таблицы всё проходит на УРА:
Код: sql
1.
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 файла просто не находит нужные значения.

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

Спасибо!
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39497720
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторRecords: 3235532 Deleted: 0 Skipped: 0 Warnings: 122950216

Код: sql
1.
SHOW WARNINGS;
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39497749
FLYERok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, SHOW WARNINGS выдает для всех столбцов:
Код: sql
1.
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)
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39497799
FLYERok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, Проблема оказалась в том, что имя XML-тега должно полностью соответствовать названию в таблице с учетом регистра . В моем случае в значения полей в таблице оказались в нижнем регистре.
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39497800
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня была такая мысль, но подумалось, что MySQL не регистрозависим в названиях таблиц, полей, операторов....
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39497828
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FLYERokПроблема оказалась в том, что имя XML-тега должно полностью соответствовать названию в таблице с учетом регистра .Ну вообще-то это установлено стандартом. Это чтобы получить регистронезависимость - надо поизвращаться (ассертом там в схеме или ещё как).
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39510374
Бакеев Дамир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. встала задача загрузки FIAS в локальную базу Oracle и MySQL, т.к. в XML формате очень много грузить а нужно только один сфой регион было принято решение грузить из DBF т.к. на просторах интернета готового не нашел написал свой класс для загрузки DBF в MySQL, в дальнейшем буду дорабатывать для загрузки в Oracle.

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


Код: php
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.
<?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);
			}
		}
	}
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39510415
Бакеев Дамир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати забыл
файл запуска положить

написать что почему-то не открывается файлы типа "NORDOC02.DBF"

для работы необходимо в системе скачать и подключить библиотеку php_dbase.dll в файле "php.ini" строку "extension=php_dbase.dll"

Файл запуска
Код: php
1.
2.
3.
	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")));

...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39516095
Андрей15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем дня,

появилась необходимость импорта ФИАС. перечитал кучу инфы и вариантов импорта, но .... ничего не получается :(
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 года сейчас стоит задача поставить актуальную базу.
подскажите гуру как при текущих условиях это сделать в разумные сроки - и вообще какие при моей конфигурации "сервака" можно считать разумными?
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39516096
Андрей15
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ps
пробовал импортировать dbf по своему региону из последних постов, но и он в базу пишет абракадабру - насколько я понял в базу почему-то попадают записи в кодировке cp1251 - но почему это происходит - мне так и не понятно
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39621198
Dzenn_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бакеев Дамир, доброго времени суток) Подскажите какое время занимает импорт полной БД ФИАС вашим скриптом, а именно интересует таблица ADDROBJ.

Спасибо!
...
Рейтинг: 0 / 0
Импорт БД ФИАС в MySQL. Практический опыт.
    #39621205
Dzenn_mgn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бакеев Дамир,

Забыл добавить, загрузка в БД Oracle.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Импорт БД ФИАС в MySQL. Практический опыт.
    #39950046
Marat-online
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Я недавно заташил ФИАС к себе в проект и столкнулся со следующей проблемой:
В таблице ADDROBJ нехватает много объектов притом некоторые с AOLEVEL 3 вот пару из низ ("4de3b33a-ebd4-4a9a-a61f-b1303ee8ac5c", "484fd840-3e18-418a-939c-b1666e56b676", "949be818-fba7-418e-9fec-03ca70cba9d9", "3aa9dab1-6d29-4573-833c-3f0ddf3ad4a0") более того нет ниодного объекта у с таким PARENTGUID но при этом на сайте https://fias.nalog.ru/ExtendedSearch эти объекты есть.
Я скачал самый свежий архив (на данный момент это архив от 13.04.2020) в формате XML вот с этого сайта: https://fias.nalog.ru/Updates и при помощи написанной мною программки на java перегнал все это дело в нашу БД. Конечно, первым дело было подозрение на косячную работу программы, но я открывал файл ADDROBJ.xml и пытался в нём найти такой ID безрезультатно. Кто нибудь сталкивался с подобного рода проблемами. На всякий случай эти объекты относятся к Пермскому краю и Челябинской области. Я был бы очень рад любой помощи.
...
Рейтинг: 0 / 0
23 сообщений из 48, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Импорт БД ФИАС в MySQL. Практический опыт.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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