使用 SQL INSERT 语句和 ST_Geometry 函数将记录插入包含 ST_Geometry 列的表。
要插入 ST_Geometry 列的数据可采用以下几何格式之一表示:
- 开放地理空间联盟 (OGC),可识别文本 (WKT) 表示
- OGC 熟知二进制 (WKB) 表示
这些格式需要使用输入和输出转换函数将空间数据插入数据库以及从数据库检索空间数据。系统提供一些函数,用于将数据从这些外部格式转换为 Oracle、PostgreSQL 或 SQLite 数据库中存储的数据类型。对于 PostgreSQL,还提供了转换 Esri shapefile 格式的函数。
在下面的示例中,一些记录被插入到 Oracle、PostgreSQL 和 SQLite 数据库中的数据库表(sensitive_areas 和 hazardous_sites)内。在将面的熟知文本表示插入 Oracle 中 sensitive_areas 表的 ZONE 列之前,先使用 ST_Geometry 函数将其转换为 ST_Polygon 类型。在将面的熟知文本表示插入 PostgreSQL 和 SQLite 中 sensitive_areas 表的 ZONE 列之前,先使用 ST_Polygon 函数将其转换为 ST_Polygon 类型。同样,将点的熟知文本表示插入到 Oracle 中 hazardous_sites 表的 LOCATION 列之前,先使用 ST_Geometry 函数将其转换为 ST_Point 类型;将点的熟知文本表示插入到 PostgreSQL 和 SQLite 中 hazardous_sites 表的 LOCATION 列之前,先使用 ST_Point 函数将其转换为 ST_Point 类型。您还可以利用 ST_PolyFromWKB() 和 ST_PointFromWKB() 函数以熟知二进制格式输入数据。
- 登录 SQL 编辑器,以具有将数据插入到表中的权限的用户身份,连接到包含待插入数据的表的数据库。
- 使用 SQL INSERT 语句向 sensitive_areas 和 hazardous_sites 表添加记录。
- Oracle
INSERT INTO SENSITIVE_AREAS (area_id, name, area_size, type, zone) VALUES ( 1, 'Summerhill Elementary School', 67920.64, 'school', sde.st_geometry('polygon ((52 28,58 28,58 23,52 23,52 28))', 4326) ); INSERT INTO HAZARDOUS_SITES (row_id, site_id, name, location) VALUES ( 1, 102, 'W. H. Kleenare Chemical Repository', sde.st_geometry('point (52 24)', 4326) );
- PostgreSQL
INSERT INTO sensitive_areas (area_id, name, area_size, type, zone) VALUES ( 1, 'Summerhill Elementary School', 67920.64, 'school', ST_Polygon('polygon ((52 28, 58 28, 58 23, 52 23, 52 28))', 4326) ); INSERT INTO hazardous_sites (row_id, site_id, name, location) VALUES ( 1, 102, 'W. H. Kleenare Chemical Repository', ST_Point('point (52 24)', 4326) );
- SQLite
INSERT INTO sensitive_areas (name, area_size, type, zone) VALUES ( 'Summerhill Elementary School', 67920.64, 'school', ST_Polygon('polygon ((52 28, 58 28, 58 23, 52 23, 52 28))', 4326) ); INSERT INTO hazardous_sites (site_id, name, location) VALUES ( 102, 'W. H. Kleenare Chemical Repository', ST_Point('point (52 24)', 4326) );
- Oracle