首批通过分布式安全可靠测评,为关键业务系统打造
创建空间列
更新时间:2026-04-07 20:57:20
本文档介绍了如何在 OceanBase 数据库中创建空间列。
准备工作
使用 GIS 功能前,需在业务租户配置空间数据元数据。在连接到服务器后,执行如下命令将 default_srs_data_mysql.sql 文件导入到数据库中:
## $password 需替换为登录数据库的密码
## $localhost 需替换为登录数据库的 IP
## $tenant_name 需替换为登录数据库的租户名
## $port 需替换为数据库端口号
$python /home/admin/oceanbase/bin/import_srs_data.py -p'$password' -h $localhost -P $port -t $tenant_name -f /home/admin/oceanbase/etc/default_srs_data_mysql.sql
返回以下结果代表导入数据文件成功:
INFO: succeed to import srs data
INFO: oceanbase.__all_spatial_reference_systems old result rows -- 1
INFO: oceanbase.__all_spatial_reference_systems new result rows -- 5152
示例
OceanBase 数据库支持使用 CREATE TABLE 或 ALTER TABLE 创建空间列。
使用 CREATE TABLE 语句创建具有空间列的表,语法示例如下:
CREATE TABLE geom (g GEOMETRY);
使用 ALTER TABLE 语句在现有表中添加或删除空间列,语法示例如下:
ALTER TABLE geom ADD pt POINT;
ALTER TABLE geom DROP pt;
以下示例展示如何创建带有各种几何类型的表:
-- 创建一张带有各种几何类型的表
CREATE TABLE spatial_data (
id INT AUTO_INCREMENT PRIMARY KEY,
geom_point POINT, -- 点类型
geom_linestring LINESTRING not NULL SRID 4326, -- 线类型
geom_polygon POLYGON, -- 多边形类型
geom_multipoint MULTIPOINT, -- 多点类型
geom_multilinestring MULTILINESTRING,-- 多线类型
geom_multipolygon MULTIPOLYGON, -- 多多边形类型
geom_geometrycollection GEOMETRYCOLLECTION, -- 几何集合类型
geom_geometry GEOMETRY -- 通用几何类型,可以存储任意几何值。
);
创建空间列的相关约束如下:
定义空间列的时候,可以显式指定 SRID。如果列上没有定义 SRID,查询的时候优化器不会选择空间索引,但是插入/更新的时候,仍然会生成索引记录。
空间列在指定
NOT NULL约束以及指定了 SRID 之后,可以在空间列上定义空间索引,也即只有定义了 SRID 的列才能使用空间索引。在空间列上定义了 SRID 之后,插入其它 SRID 值会报错。
SRID 的相关约束如下:
空间列上显示指定了
SRID。列上所有对象的
SRID必须一样。