我下载并解压缩了OpenStreetMap源文件(See here)。我现在有一个400GB的XML源文件,我想(1)将数据插入MySQL表 OR (2)将其导出到SQL文件,无关紧要。
通常是否可以在数据库/ SQL文件中导入整个文件,如果是,如何?我在哪里可以找到表/数据库结构?有没人试过?
非常感谢!
答案 0 :(得分:3)
嗯,确实有可能:http://wiki.openstreetmap.org/wiki/MySQL
但请注意,这是不受支持的解决方案:
我强烈建议使用PostGIS扩展切换到postgreSQL,这是GIS世界的半标准。
最终它取决于您的用例(原型设计......具有实时OSM数据更新的高可用性DB服务器)。您可以在http://switch2osm.org
找到更多信息答案 1 :(得分:2)
我相信这个问题的答案现在已经改变了。从MySQL 5.6开始,MySQL现在有一个功能齐全的OpenGIS地理空间功能集(它甚至不是扩展;它是内置的)。因此,从纯粹的理论角度来看,没有理由不能使用您用于PostgreSQL的标准的,支持的数据库模式将OSM数据导入MySQL(当然,必要时会更改语法)。实际上,this presentation(仍然指的是MySQL的OpenGIS支持的旧版本,不完整版本)表明,通过适当的索引,一些MySQL地理空间动作实际上可能比PostgreSQL PostGIS更好,尽管我确信这是最好的辩论。所以剩下的问题是导入工具......
目前,没有正式osm2mysql
相当于osm2pgsql
。有几个项目名为osm2mysql
,但我看到人们只有中等 - 如果有的话 - 使用这些项目。但是,GDAL的开源ogr2ogr
似乎是一个非常可行的解决方案。
我下载,编译并安装了ogr2ogr
,并且能够将 shapefile 导入到MySQL中的地理空间模式中,并成功地(并且显然准确地)使用类似的东西查询数据ST_Contains(...)
。我还没有尝试过OSM(这是我的下一步),但ogr2ogr
声称完全支持OSM(XML 和二进制),所以考虑到我对shapefile的成功,我想我将与OSM取得类似的成功。
我确实遇到了一些初步问题,其中一个可能与我在make clean
次尝试之间未使用configure
以及与所涉及的大型查询相关的其他问题有关(一些插入> 1MB )和一些需要调整以补偿的MySQL设置。您可以在this mailing list thread.