Az egyik projektemben szükség van a magyar települések listájára, lehetőleg koordinátákkal a későbbi távolság számítás és térképen ábrázolások miatt. Nagyon sok szolgáltató kínál ilyen adatbázisokat vagy webes API-kat horror árakon. Találtam egyet, ahonnan letölthető ez a lista txt-ben: http://download.geonames.org/export/zip/ . A fájl UTF-8 formátumú, tabbal elválasztott szöveges fájl, ahol a sorvége jel a \n.
A mezők leírása az oldal alján található:
country code : iso country code, 2 characters postal code : varchar(20) place name : varchar(180) admin name1 : 1. order subdivision (state) varchar(100) admin code1 : 1. order subdivision (state) varchar(20) admin name2 : 2. order subdivision (county/province) varchar(100) admin code2 : 2. order subdivision (county/province) varchar(20) admin name3 : 3. order subdivision (community) varchar(100) admin code3 : 3. order subdivision (community) varchar(20) latitude : estimated latitude (wgs84) longitude : estimated longitude (wgs84) accuracy : accuracy of lat/lng from 1=estimated to 6=centroid
A MySQL-ben létre kell hozni a megfelelő oszlopokat az importáláshoz, majd a következő paranccsal tudjuk gyorsan importálni a választott táblába (jelen példában „geolocations”):
LOAD DATA LOCAL INFILE '/var/www/projekt/HU.txt' INTO TABLE geolocations LINES TERMINATED BY '\n';
Segítségképpen a lustáknak a tábla SQL létrehozás kódja:
CREATE TABLE `geolocations` ( `country_code` VARCHAR(2) NULL DEFAULT NULL COMMENT 'iso country code, 2 characters' COLLATE 'utf8_hungarian_ci', `postal_code` SMALLINT(5) UNSIGNED NULL DEFAULT NULL, `place_name` VARCHAR(180) NULL DEFAULT NULL COLLATE 'utf8_hungarian_ci', `state_name` VARCHAR(100) NULL DEFAULT NULL COMMENT '1. order subdivision (state)' COLLATE 'utf8_hungarian_ci', `state_code` VARCHAR(20) NULL DEFAULT NULL COMMENT '1. order subdivision (state)' COLLATE 'utf8_hungarian_ci', `province_code` VARCHAR(100) NULL DEFAULT NULL COMMENT '2. order subdivision (county/province)' COLLATE 'utf8_hungarian_ci', `province_name` VARCHAR(20) NULL DEFAULT NULL COMMENT '2. order subdivision (county/province)' COLLATE 'utf8_hungarian_ci', `community_name` VARCHAR(100) NULL DEFAULT NULL COMMENT '3. order subdivision (community)' COLLATE 'utf8_hungarian_ci', `community_code` VARCHAR(20) NULL DEFAULT NULL COMMENT '3. order subdivision (community)' COLLATE 'utf8_hungarian_ci', `latitude` DECIMAL(7,4) NULL DEFAULT NULL COMMENT 'estimated latitude (wgs84)', `longitude` DECIMAL(7,4) NULL DEFAULT NULL COMMENT 'estimated longitude (wgs84)', `accuracy` VARCHAR(200) NULL DEFAULT NULL COMMENT 'accuracy of lat/lng from 1=estimated to 6=centroid' COLLATE 'utf8_hungarian_ci' ) COLLATE='utf8_hungarian_ci' ENGINE=MyISAM ;
_