Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / MySQL |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] все |
sparrow Member Откуда: Россия, Красноярск. Сообщений: 21759 |
Загрузить сильно, дай код сравнения ваших домов, и домов в фиасе? С учётом версий и домов в ленмарке. |
17 июн 16, 20:34 [19307184] Ответить | Цитировать Сообщить модератору |
sparrow Member Откуда: Россия, Красноярск. Сообщений: 21759 |
И интервалов домов |
17 июн 16, 20:35 [19307189] Ответить | Цитировать Сообщить модератору |
dikium Member Откуда: Сообщений: 1 |
Akina, а не подскажете сколько записей содержится в таблице House? А то я тут на ночь оставил процесс импорта, а с утра обнаружил что комп завис. В итоге у меня в таблице 18 328 237 записей. Хочу, вот, понять, завершился ли процесс импорта... Спасибо! |
31 май 17, 12:35 [20526918] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
Понятия не имею. В любом случае я бы пересоздал таблицу и перезалил данные. А в промежутке ещё бы и файловую систему проверил... |
31 май 17, 19:19 [20528771] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13638 |
Почему в этой базе г. Москва числится как регион? (AOLEVEL = 1) Московская область тоже регион. Хотел сделать выбор региона/города, но москву как город не найти (если AOLEVEL 4) |
16 июл 17, 10:12 [20647801] Ответить | Цитировать Сообщить модератору |
Асланали Member Откуда: Республика Дагестан,Махачкала Сообщений: 246 |
Akina, спасибо! |
26 июл 17, 19:06 [20677720] Ответить | Цитировать Сообщить модератору |
Асланали Member Откуда: Республика Дагестан,Махачкала Сообщений: 246 |
Исходник проги на делфи не выложите тут? Прошу прощения за наглость ![]() |
26 июл 17, 19:21 [20677740] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
Статья по теме: Как перейти от КЛАДР к ФИАС и ничего себе не сломать |
26 июл 17, 20:49 [20677889] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38694 |
Тогда уж вдогонку: ФИАС умер, да здравствует… да здравствует… да не понятно что пока Смысла мало, депрессии много. |
26 июл 17, 21:07 [20677922] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
Ну "хоть что-то" всяко лучше, чем ничего, через какую бы задницу оно ни было. |
27 июл 17, 21:44 [20681026] Ответить | Цитировать Сообщить модератору |
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 года схемой:
Сама таблица выглядит так.
Пробовал на разных машинах с разной конфигурацией MySQL, результат один и тот же. Хотя, с другим XML файлом StructureStatus.XML для более простой таблицы всё проходит на УРА: LOAD XML LOCAL INFILE '/Users/pavel/Desktop/testfias/AS_STRSTAT.XML' INTO TABLE `StructureStatus` ROWS IDENTIFIED BY '<StructureStatus>';
Видимо MySQL при парсинге XML файла просто не находит нужные значения. Подскажите, пожалуйста, как решить эту проблему. Спасибо! |
|||
31 июл 17, 12:58 [20687622] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13638 |
SHOW WARNINGS;
|
||
31 июл 17, 13:07 [20687658] Ответить | Цитировать Сообщить модератору |
FLYERok Member Откуда: Сообщений: 3 |
Hett, SHOW WARNINGS выдает для всех столбцов:Column set to default value; NULL supplied to NOT NULL column
|
|
31 июл 17, 13:36 [20687797] Ответить | Цитировать Сообщить модератору |
FLYERok Member Откуда: Сообщений: 3 |
Hett, Проблема оказалась в том, что имя XML-тега должно полностью соответствовать названию в таблице с учетом регистра. В моем случае в значения полей в таблице оказались в нижнем регистре. |
31 июл 17, 14:40 [20688245] Ответить | Цитировать Сообщить модератору |
Hett Member Откуда: Бийск, Новосибирск Сообщений: 13638 |
У меня была такая мысль, но подумалось, что MySQL не регистрозависим в названиях таблиц, полей, операторов.... |
31 июл 17, 14:41 [20688262] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
|
||
31 июл 17, 15:33 [20688643] Ответить | Цитировать Сообщить модератору |
Бакеев Дамир 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] Ответить | Цитировать Сообщить модератору |
Бакеев Дамир Member Откуда: Сообщений: 11 |
кстати забыл
|
|
25 авг 17, 12:46 [20749049] Ответить | Цитировать Сообщить модератору |
Андрей15 Member Откуда: Сообщений: 6 |
Доброго всем дня, появилась необходимость импорта ФИАС. перечитал кучу инфы и вариантов импорта, но .... ничего не получается :( 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] Ответить | Цитировать Сообщить модератору |
Андрей15 Member Откуда: Сообщений: 6 |
ps пробовал импортировать dbf по своему региону из последних постов, но и он в базу пишет абракадабру - насколько я понял в базу почему-то попадают записи в кодировке cp1251 - но почему это происходит - мне так и не понятно |
6 сен 17, 04:28 [20774238] Ответить | Цитировать Сообщить модератору |
Dzenn_mgn Member Откуда: Магнитогорск Сообщений: 2 |
Бакеев Дамир, доброго времени суток) Подскажите какое время занимает импорт полной БД ФИАС вашим скриптом, а именно интересует таблица ADDROBJ. Спасибо! |
27 мар 18, 14:15 [21289958] Ответить | Цитировать Сообщить модератору |
Dzenn_mgn Member Откуда: Магнитогорск Сообщений: 2 |
Бакеев Дамир, Забыл добавить, загрузка в БД Oracle. |
27 мар 18, 14:19 [21289985] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Marat-online Member Откуда: Сообщений: 1 |
Всем привет! Я недавно заташил ФИАС к себе в проект и столкнулся со следующей проблемой: В таблице 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 безрезультатно. Кто нибудь сталкивался с подобного рода проблемами. На всякий случай эти объекты относятся к Пермскому краю и Челябинской области. Я был бы очень рад любой помощи. |
22 апр 20, 15:56 [22120839] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] все |
Все форумы / MySQL | ![]() |