Ahoj,
možná se někomu bude hodit. Vyštrachal jsem ze zápisků postup, kterým jsem kdysi vymyslel na import RÚIANu dostupného na webu do lokální SQL. Za aktuálnost ani chybuvzdornost ale neručím.
1. Příprava souboru schema.sql
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
DROP TABLE IF EXISTS `ruian`;
CREATE TABLE `ruian` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`kod_adm` INT(11),
`kod_obce` INT(11),
`nazev_obce` VARCHAR(255),
`nazev_momc` VARCHAR(255),
`nazev_mop` VARCHAR(255),
`kod_casti_obce` INT(11),
`nazev_casti_obce` VARCHAR(255),
`nazev_ulice` VARCHAR(255),
`typ_so` VARCHAR(255),
`cislo_domovni` INT(11),
`cislo_orientacni` INT(11),
`znak_cisla_orientacniho` VARCHAR(255),
`psc` INT(11),
`souradnice_y` VARCHAR(255),
`souradnice_x` VARCHAR(255),
`plati_od` VARCHAR(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
2. Import schema.sql do databáze
mysql -u uživatel -p databáze < /root/ruian.sql
3. Stáhnutí souborů, spojení a konverze na jeden CSV soubor vhodný pro import (Linux nebo OS X)
- Stáhnout ZIP z http://nahlizenidokn.cuzk.cz/StahniAdresniMistaRUIAN.aspx a rozbalit (cca 6300 CSV souborů / 330 MB)
- Spojit jednotlivé CSV soubory do jednoho (celkem okolo 2,9 mil řádků), ten zkonvertovat z defaultního kódování cp1250 na UTF-8 a odstranit všechny řádky s hlavičkou:
1. cat * > cp1250.csv
2. iconv -f cp1250 -t utf-8 < cp1250.csv > utf-8.csv
3. grep -v '^Kód ADM' utf-8.csv > ruian.csv
Import CSV souboru ruian.csv do tabulky
- Název importovaného souboru (bez přípony .csv) musí být stejný jako tabulka do které je soubor importován.
- Pokud je oddělovač polí středník, pak je potřeba jej eskejpovat \;
mysqlimport --fields-terminated-by=\; --columns='kod_adm,kod_obce,nazev_obce,nazev_momc,nazev_mop,kod_casti_obce,nazev_casti_obce,nazev_ulice,typ_so,cislo_domovni,cislo_orientacni,znak_cisla_orientacniho,psc,souradnice_y,souradnice_x,plati_od' --local -u uživatel -p databáze ruian