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