关于使用 SQL 更新数据
将大量数据加载到地理数据库后,您可能需要立即更新许多属性值。如果是 ArcSDE 地理数据库,可通过以下方法来执行此操作:版本化数据,然后在 ArcMap 中进行编辑以执行更新。这种方法的问题是所有已更新要素都将位于增量表中;您应压缩数据库以将已更新要素移动到基表中。
另一种方法是执行批量属性更新(可在版本化数据之前使用 SQL 执行此操作)。使用此方法意味着,这些批量更新将在版本化数据之前完成,并且所有要素都会保留在基表中。
有些规则适用于通过 SQL 执行更新。了解数据模型非常重要,这样您所更新的属性将不会通过关系或其他行为影响数据库中的其他对象。如果您没有彻底了解数据模型,则使用 SQL 执行此操作将可能导致数据损坏。例如,如果使用 SQL 修改从中获取关联要素的注记文本的要素的属性,则不会向注记要素发送更新消息,因而注记和要素将不会同步。在 ArcGIS 中更新这些属性时,将会执行所有必要行为。
以下列出了在 ArcGIS 环境外部使用 SQL 执行更新时的一些重要准则:
- 切勿在已对数据进行版本化以后使用 SQL 更新记录。
- 使用 SQL 更新数据时,不会修改通过地理数据库行为影响数据库中的其他对象的属性。
- 切勿使用 SQL 更新对象 ID 字段。
- 切勿使用 SQL 为几何网络要素类更新“启用”或“辅助角色”字段或者权重字段。这些字段通过 ArcGIS 更新后,将会导致 SQL 不会触发的几何网络拓扑表发生更改。
- 切勿更新注记要素类的元素、符号 ID、文本字符串、字体名称、字体大小、粗体、斜体、下划线、垂直对齐、水平对齐、X 偏移、Y 偏移、角度、行间距、文字间距、字符宽度、字符间距、翻转角度或覆盖字段。这些字段通过 ArcGIS 更新后,将会导致 SQL 不会触发的要素的 BLOB 元素发生更改。在 ArcGIS 外部使用 SQL 更新这些字段后,对于所有更新的行,与每个注记要素关联的文本符号字段将不会更新。
5/10/2014