エントリをロードした国テーブルと都市テーブルを作成する SQL を取得できる場所はありますか。都市が国にリンクされていて、都市に座標があれば素晴らしいと思います. このデータは、選択オプションを入力したり、マーカーを GoogleMap にプロットしたりするために使用されます。
2 に答える
geonames.org の txt 形式のデータベースを使用しました。
ここでは txt ファイルをダウンロードする方法について説明し、ここではMySql にインポートする方法について説明します。
私はそれを私のmysqlデータベースに入れましたが、実際の問題はありませんでした。テーブルのいくつかは巨大になるので、テーブルにインデックスを追加することを忘れないでください!
古い質問に答えて申し訳ありませんが、同じ情報を探してここにたどり着きましたが、どこにも明確に答えられていないようです。
geonames からの「allCountries」データは非常に広範で (簡単に言うと)、ほとんどのアプリケーションにとって過剰です。「cities1000」の方がはるかに理にかなっていて、はるかに扱いやすいサイズです。サーバーへの SSH アクセスがあれば、MySQL へのインポートは非常に簡単です。
ファイルをダウンロードする
wget http://download.geonames.org/export/dump/cities1000.zip
抽出する
unzip cities1000.zip
次のクエリを実行します ( MyDatabase をデータベースの名前に置き換えることを忘れないでください。テーブルの名前はファイルの名前と一致する必要があります)。
.
CREATE TABLE IF NOT EXISTS `MyDatabase`.`cities1000` (
`geo_id` INT(11) UNSIGNED NOT NULL PRIMARY KEY,
`geo_name` VARCHAR(200) NOT NULL DEFAULT '',
`geo_ansiname` VARCHAR(200) NOT NULL DEFAULT '',
`geo_alternate_names` VARCHAR(2000) NOT NULL DEFAULT '',
`geo_latitude` DOUBLE PRECISION(11,7) NOT NULL DEFAULT '0',
`geo_longitude` DOUBLE PRECISION(11,7) NOT NULL DEFAULT '0',
`geo_feature_class` CHAR(1) ,
`geo_feature_code` VARCHAR(10) ,
`geo_country_code` CHAR(2),
`geo_country_code2` VARCHAR(60),
`geo_admin1_code` VARCHAR(20) DEFAULT '',
`geo_admin2_code` VARCHAR(80) DEFAULT '',
`geo_admin3_code` VARCHAR(20) DEFAULT '',
`geo_admin4_code` VARCHAR(20) DEFAULT '',
`geo_population` BIGINT(11) DEFAULT '0',
`geo_elevation` INT(11) DEFAULT '0',
`geo_gtopo30` INT(11) DEFAULT '0',
`geo_timezone` VARCHAR(40),
`geo_mod_date` DATE DEFAULT '0000-00-00'
) CHARACTER SET utf8 ;
- ダウンロードしたファイルをデータベースにインポートします (サーバーの構成に合わせてコマンドを変更する必要があります)。
mysqlimport -h localhost -u MySQL-USER -p --fields-terminated-by='\t' --lines-terminated-by='\n' --local MyDatabase /path-to/cities1000.txt
- 非常に重要:関連するフィールドにインデックスを追加する
それでおしまい!「allCountries」ファイルにすべての「ジャンク」がない、世界の都市の非常に包括的なリストです。
データに関する主な問題は、国が必要な場合は、そのテーブルを自分で作成し、それらを都市にリンクする外部キーを追加する必要があることですが、2 つ目のデータ ソース(XML で利用可能) といくつかの巧妙なクエリを使用すると、トリックを行います。