STV_ShpSource 和 STV_ShpParser
这两个函数与 COPY 配合使用,解析 shapefile 中的几何图形和属性并将其加载到 Vertica 表,然后转换为适当的 GEOMETRY 数据类型。必须将这两个函数一起使用。
存在以下限制:
-
无法从 shapefile 加载空的点集合或无效的多边形集合。
-
如果 shapefile 的
.dbf
组件包含数字属性,则在 Vertica Place shapefile 加载程序将此字段加载到表中时,此字段的值可能会损失精度。因为目标字段为 64 位 FLOAT 列,只能表示约 15 个有效位;而在.dbf
文件中,数字字段最多可达 30 位。
被拒绝的记录保存在 Vertica 编录目录下的 CopyErrorLogs
子目录。
行为类型
不可变语法
COPY table( columnslist )
WITH SOURCE STV_ShpSource
( file = 'filename'[[, SRID=spatial‑reference‑identifier] [, flatten_2d={true | false }] ] )
PARSER STV_ShpParser()
参数
-
表
- 向其中加载几何数据的表名称。
-
columnslist
- 表中与外部文件中的字段相匹配的列名称的逗号分隔列表。运行 STV_ShpCreateTable 创建的 CREATE TABLE 命令。执行此操作时,这些列将对应第二列到倒数第二列。
-
file = 'pathname'
- 指定
.dbf
、.shp
或.shx
文件的完全限定路径。您还可以从存储在您具有读取和写入权限的挂载 S3 目录中的 shapefile 加载。在这种情况下,请使用以下语法:
bucketname/path/filename
-
SRID=spatial‑reference‑identifier
- 指定与形状文件关联的整数空间参照标识符 (SRID)。
flatten_2d
- 指定在 COPY 命令期间排除 3D 或 4D 坐标的 BOOLEAN 实参:
-
true
:在 COPY 命令之前排除具有 3D 或 4D 坐标的几何图形。 -
false
:如果找到具有 3D 或 4D 坐标的几何图形,则会导致加载失败。
默认值:
false
-
特权
-
源 shapefile:读取
-
shapefile 目录:执行
COPY 错误
COPY 命令在以下任一情况下会失败:
-
找不到或无法打开 shapefile。
-
STV_ShpParser 创建的列数或列数据类型与目标表中的列不匹配。使用 STV_ShpCreateTable 生成相应的 CREATE TABLE 命令。
-
缺失或无法打开其中一个必要文件。打开 shapefile 时,您必须拥有三个文件:
.dbf
、.shp
和.shx
。
STV_ShpSource 文件损坏处理
-
如果
.shp
和.shx
文件已损坏,STV_ShpSource 将返回错误。 -
如果
.shp
和.shx
文件有效,但.dbf
文件已损坏,STV_ShpSource 将忽略.dbf
文件并且不创建该数据对应的列。
示例
=> COPY tl_2010_us_state10 WITH SOURCE
STV_ShpSource(file='/shapefiles/tl_2010_us_state10.shp', SRID=4269) PARSER STV_ShpParser();
Rows loaded
-------------
52