Shapefile 图层导入到Oracle空间库时,如何判断字段名称是否合法?

Shapefile 图层导入到Oracle空间库时发生错误:对象名不是基础 DBMS 的常规识别符 [ORA-00942: 表或视图不存在] ;检查发现shapefile图层有一个字段名称包含了括号特殊字符,导致了创建sde图层失败;
现在有个疑问就是在创建图层前已经通过
IFieldChecker检查字段名称是否合法,为什么字段名称包含括号的问题检查不出来?检查的函数如下:
 public static IFields ValidateFieldsForWorkspace(IFields fields, IWorkspace sourceWorkspace, IWorkspace targetWorkspace, out string ex)
{
// IFieldChecker创建字段检查.
IFieldChecker fieldChecker = new FieldCheckerClass();
fieldChecker.InputWorkspace = sourceWorkspace;
fieldChecker.ValidateWorkspace = targetWorkspace;

// 检验字段
IEnumFieldError enumFieldError = null;
IFields validatedFields = null;
fieldChecker.Validate(fields, out enumFieldError, out validatedFields);

// 显示字段错误
ex = "";
IFieldError fieldError = null;
if (enumFieldError != null)
{
enumFieldError.Reset();
while ((fieldError = enumFieldError.Next()) != null)
{
IField errorField = fields.get_Field(fieldError.FieldIndex);
ex = string.Format("字段 '{0}': 字段错误 '{1}'", errorField.Name, fieldError.FieldError);
switch (fieldError.FieldError)
{
case esriFieldNameErrorType.esriSQLReservedWord:
ex = string.Format("字段 '{0}'是SQL的保留字段,请重新命名", errorField.Name);
break;
case esriFieldNameErrorType.esriInvalidFieldNameLength:
ex = string.Format("字段 '{0}'字段名过长,请修改字段名", errorField.Name);
break;
case esriFieldNameErrorType.esriInvalidCharacter:
ex = string.Format("字段 '{0}'是无效字符,请重新命名", errorField.Name);
break;
case esriFieldNameErrorType.esriDuplicatedFieldName:
ex = string.Format("字段 '{0}'重复字段名,请重新命名", errorField.Name);
break;
}
break;
}
}

// 返回字段
return validatedFields;
}

 
已邀请:

刘锋

赞同来自:

哪个版本。
在10.6版本上的arcpy测试的结果如下


无标题.png

 

菠萝仔

赞同来自:

ArcGIS Engine10.1

要回复问题请先登录注册