【问题标题】:How to import Geonames into SQLite?如何将 Geonames 导入 SQLite?
【发布时间】:2014-04-15 14:33:04
【问题描述】:

我需要将 Geonames 数据库 (http://download.geonames.org/export/dump/) 导入 SQLite(文件大小约为 1 GB,±8,000,000 条记录,制表符分隔)。

我正在使用 Mac OS X 的内置 SQLite-possibilities,通过终端访问。一切顺利,直到记录 381174(使用旧文件测试,确切数字略有不同,具体取决于 Geonames 数据库的确切版本,因为它每隔几天更新一次),其中错误“预期 19 列数据但发现 18”显示出来。

导致问题的确切行是:

126704 Gora Kyumyurkey Gora Kyumyurkey Gora Kemyurkey,Gora Kyamyar-Kup,Gora Kyumyurkey,Gora Këmyurkëy,Komur Qu",Komur Qu',Komurkoy Dagi,Komūr Qū',Komūr Qū”,Kummer Kid,Kömürköy Dağı,kumwr qwʾ,كُمور قوء 38.73335 48.24133 T MT AZ AZ 00 0 2471 亚洲/巴库 2014-03-05

我分别测试了各个国家,西方国家都是完全进口没有问题的,这让我相信问题出在某些条目中使用的异国字符的某个地方。 (我已经把这行放到一个单独的文件中,并用其他几个数据库程序进行了测试,有些确实出错了,有些导入没有问题)。

我该如何解决这个错误,或者有其他方法可以导入文件吗?

感谢您的帮助,如果您需要更多信息,请告诉我。

【问题讨论】:

  • 您是如何导入的?您使用的是什么分隔符,该行中有多少个?
  • 文件是制表符分隔的,所以所有的值都用制表符分隔。每个条目共有 19 个值,有关更多信息,请参阅我提供的链接,其中详细解释了文件的格式(或下载较小的文件进行测试)。
  • 哪个 SQLite 版本?

标签: sqlite import terminal geonames


【解决方案1】:

关于问题标题,初步搜索结果

GeoNames 格式说明(“utf8 编码中的制表符分隔文本”)

一些库(未经测试):

GUI(@charlest 提到):

SQLite 工具也具有导入功能:

【讨论】:

    【解决方案2】:

    这看起来像是一个双向文本问题。 "كُمور قوء" 预计将位于逗号分隔的备用名称列表的末尾。但是,由于它是右旋(或 RTL),它显示在纬度和经度值的错误一侧。

    我不了解您的导入方法,但在我看来,这可能就是它认为缺少一列的原因。

    【讨论】:

      【解决方案3】:

      我在这里使用 geonames 论坛的脚本发现了同样的问题:http://forum.geonames.org/gforum/posts/list/32139.page

      尽管调整了脚本以在 Mac OS X (Sierra 10.12.6) 上运行,但我遇到了同样的错误。但是感谢脚本作者,因为它帮助我创建了 sqlite 数据库文件。

      过了一会儿,我决定使用 sqlite DB Browser for SQLite(版本 3.11.2)而不是继续使用脚本。

      我也有这个方法的错误,发现我必须将导入对话框中的“引用字符”设置设置为空白状态。完成后,从 FULL allCountries.txt 文件的导入在我的 MacBookPro(一个旧的,但带有 SSD)上运行不到一个小时。

      虽然我没有深入研究,但我假设地名文本文件不能以任何方式引用解析。每行只需要作为制表符分隔的 UTF-8 字符串处理。

      在撰写本文时 allCountries.txt 为 1.5GB,包含 11,930,517 条记录。 SQLite 数据库文件仅不足 3GB。

      希望对您有所帮助。

      更新 1: 进一步调查显示,这确实是由于 geonames 文件中嵌入的引号引起的,在这里查看:https://sqlite.org/quirks.html#dblquote 表明 SQLite 存在引号问题。因此,您需要能够在 SQLite 中关闭引号解析。

      尽管 3.11.2 版本的 DB Browser 基于 SQLite 3.27.2 没有忽略引号所需的模块,但我只能假设当您将“引号字符”设置为时它必须转义引号空白。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-11
        • 2011-01-04
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-03
        • 1970-01-01
        相关资源
        最近更新 更多