跳转到主要内容
本页不适用于 ClickHouse Cloud。本文档介绍的功能不适用于 ClickHouse Cloud 服务。 更多信息,请参阅 ClickHouse 的 Cloud Compatibility 指南。
ClickHouse 内置了用于处理 geobase 的功能。 这使你能够:
  • 使用区域 ID 获取其在指定语言中的名称。
  • 使用区域 ID 获取城市、地区、联邦区、国家或洲的 ID。
  • 检查一个区域是否属于另一个区域。
  • 获取父级区域链。
所有函数都支持“translocality”,即能够同时采用不同的区域归属视角。更多信息,请参见“用于处理网站分析字典的函数”一节。 默认安装包中禁用了内部字典。 要启用它们,请在服务器配置文件中取消注释参数 path_to_regions_hierarchy_filepath_to_regions_names_files geobase 从文本文件加载。 regions_hierarchy*.txt 文件放入 path_to_regions_hierarchy_file 目录中。此配置参数必须包含 regions_hierarchy.txt 文件 (默认区域层级) 的路径,其他文件 (regions_hierarchy_ua.txt) 也必须位于同一目录中。 regions_names_*.txt 文件放入 path_to_regions_names_files 目录中。 你也可以自行创建这些文件。文件格式如下: regions_hierarchy*.txt:TabSeparated (无表头) ,列:
  • 区域 ID (UInt32)
  • 父区域 ID (UInt32)
  • 区域类型 (UInt8):1 - 洲,3 - 国家,4 - 联邦区,5 - 区域,6 - 城市;其他类型没有值
  • 人口 (UInt32) — 可选列
regions_names_*.txt:TabSeparated (无表头) ,列:
  • 区域 ID (UInt32)
  • 区域名称 (String) — 不能包含制表符或换行符,即使是转义后的也不行。
在 RAM 中使用扁平数组存储。因此,ID 不应大于一百万。 字典可以在不重启服务器的情况下更新。但是,可用字典的集合不会更新。 更新时会检查文件的修改时间。如果文件已更改,则会更新字典。 检查更改的时间间隔由 builtin_dictionaries_reload_interval 参数配置。 字典更新 (首次使用时的加载除外) 不会阻塞查询。更新期间,查询会使用字典的旧版本。如果更新过程中发生错误,错误会写入服务器日志,查询将继续使用字典的旧版本。 我们建议定期使用 geobase 更新字典。在更新期间,生成新文件并将其写入单独的位置。一切准备就绪后,将它们重命名为服务器使用的文件。 还有一些用于处理 OS 标识符和搜索引擎的函数,但不应使用它们。
最后修改于 2026年6月10日