2011-03-13 89 views

回答

20

我发现通过查找包含在你的一节链接到zip文件的自述文件下面的“主要‘GeoName’表具有以下字段:”

首先在创建数据库和表你的MySQL实例。字段的类型在我刚引用上述标题的部分的每一行中给出。

CREATE DATABASE DO_test; 
CREATE TABLE `DO_test`.`DO_table` (
    `geonameid` INT, 
    `name` varchar(200), 
    `asciiname` varchar(200), 
    `alternatenames` varchar(5000), 
    `latitude` DECIMAL(10,7), 
    `longitude` DECIMAL(10,7), 
    `feature class` char(1), 
    `feature code` varchar(10), 
    `country code` char(2), 
    `cc2` char(60), 
    `admin1 code` varchar(20), 
    `admin2 code` varchar(80), 
    `admin3 code` varchar(20), 
    `admin4 code` varchar(20), 
    `population` bigint, 
    `elevation` INT, 
    `gtopo30` INT, 
    `timezone` varchar(100), 
    `modification date` date 
) 
CHARACTER SET utf8; 

创建表后,您可以从文件导入数据。该字段由制表符,行分隔符为换行符:

LOAD DATA INFILE '/path/to/your/file/DO.txt' INTO TABLE `DO_test`.`DO_table`; 
+0

糟糕,你需要做一些与经纬度不同的事情。我正在解决这个问题。我认为他们应该是“POINT”而不是DECIMAL。 – wilbbe01 2011-03-13 02:58:07

+0

出于某种原因,我得到: 错误代码:29 未找到文件'/home/blueprint/DO.txt'(Errcode:13) 我很确定文件在那里。 – 2011-03-13 02:59:28

+0

@LuisDUrraca:你在MAC吗?错误代码13意味着MySQL无法看到该文件。我有一个mac,我把我的DO.txt文件放在Mac的mysql目录下。比找出MySQL为什么看不到为每个人完整阅读的文件要容易得多。在我的机器上,这是在/ usr/local/mysql中。 – wilbbe01 2011-03-13 03:10:31

13

我已经在最近,从下载网站GEONAMES的最新数据,并将它们导入到MySQL数据库的shell脚本。它基于GeoNames论坛的知识,为我节省了很多时间。

它是在它的第一个版本,但功能齐全。也许它可以帮助。

您可以在http://codigofuerte.github.com/GeoNames-MySQL-DataImport/

+0

谢谢。这为我们节省了一些麻烦。似乎甚至可以与Cygwin一起工作(在我的同事电脑上看到它)。现在运行在我的Linux机器上。似乎工作,但需要sooooo很久! :) – walialu 2014-04-29 09:43:01

+0

谢谢,这证明非常有用 – wolfgang 2015-09-10 05:53:58

7

访问它对于每一个在未来: 在geonames.org论坛在2008年,这是“进口所有GEONAMES转储到MySQL” http://forum.geonames.org/gforum/posts/list/732.page

也是谷歌这样的:进口转储到[PostgreSQL的或SQL Server或MySQL]现场:forum.geonames.org

为了找到更多的答案甚至从2006年全年

编辑提供简介:

在geoname官方读我:http://download.geonames.org/export/dump/。我们将找到关于转储文件和它们的内容的很好的描述。

转储文件将直接导入到MySQL数据表。例如:

SET character_set_database=utf8; 
LOAD DATA INFILE '/home/data/countryInfo.txt' INTO TABLE _geo_countries IGNORE 51 LINES(ISO2,ISO3,ISO_Numeric,FIPSCode,AsciiName,Capital,Area_SqKm,Population,ContinentCode,TLD,CurrencyCode,CurrencyName,PhoneCodes,PostalCodeFormats,PostalCodeRegex,Languages,GeonameID,Neighbours,EquivalentFIPSCodes); 
SET character_set_database=default; 

小心的字符集,因为如果我们用2012年的旧的phpmyadmin的CSV LOAD DATA准备进口商即使列的排序规则设置为utf8_general_ci我们可能会失去UTF字符

目前有4个主要数据表:大洲,国家(countryInfo.txt),部门(管理),城市或地区(GEONAMES)

ADMIN1,2,3,4个转储文件是不同水平的国家的内部分裂如美国或其他国家的省份的管理员1。 admin 2更详细,是国家或省的内部分支。依此类推3和4

列出的国家转储文件不仅包含城市,还包含该国的所有地区,甚至包括商店中心。还有一个巨大的文件,因为从zip文件中提取“allCountries.txt”将超过1GB。如果我们只需要城市,我们应该选择一个转储文件:cities1000.txt,cities5000.txt,cities15000.txt,其中数字表示所列城市的最小人口数。我们将城市存储在geonames数据表中(您可以称之为地理位置或地理城市)。

在导入* .txt转储文件之前,需要对MySQL文档中的LOAD DATA语法进行一些研究。

自述文本文件(也转储页面的页脚)为例子足以说明:

The main 'geoname' table has the following fields : 
--------------------------------------------------- 
geonameid   : integer id of record in geonames database 
name    : name of geographical point (utf8) varchar(200) 
asciiname   : name of geographical point in plain ascii characters, varchar(200) 
alternatenames : alternatenames, comma separated varchar(5000) 
latitude   : latitude in decimal degrees (wgs84) 
longitude   : longitude in decimal degrees (wgs84) 
feature class  : see http://www.geonames.org/export/codes.html, char(1) 
feature code  : see http://www.geonames.org/export/codes.html, varchar(10) 
country code  : ISO-3166 2-letter country code, 2 characters 
cc2    : alternate country codes, comma separated, ISO-3166 2-letter country code, 60 characters 
admin1 code  : fipscode (subject to change to iso code), see exceptions below, see file admin1Codes.txt for display names of this code; varchar(20) 
admin2 code  : code for the second administrative division, a county in the US, see file admin2Codes.txt; varchar(80) 
admin3 code  : code for third level administrative division, varchar(20) 
admin4 code  : code for fourth level administrative division, varchar(20) 
population  : bigint (8 byte int) 
elevation   : in meters, integer 
dem    : digital elevation model, srtm3 or gtopo30, average elevation of 3''x3'' (ca 90mx90m) or 30''x30'' (ca 900mx900m) area in meters, integer. srtm processed by cgiar/ciat. 
timezone   : the timezone id (see file timeZone.txt) varchar(40) 
modification date : date of last modification in yyyy-MM-dd format 

也即将VARCHAR(5000),我们应该知道每行的MySQL的64KB的大小5.0或更高版本: Is a VARCHAR(20000) valid in MySQL?