代码如下:
/// <summary>
/// 表转换
/// </summary>
/// <param name="sourceWorkspace">源数据库</param>
/// <param name="targetWorkspace">目标数据库</param>
/// <param name="nameOfSourceTable">源表名</param>
/// <param name="nameOfTargetTable">目标表名</param>
/// <param name="pQueryFilter">(属性)过滤条件</param>
public static bool ConvertTable(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string nameOfSourceTable, string nameOfTargetTable, IQueryFilter pQueryFilter = null)
{
bool bResult = true;
try
{
//create source workspace name
IDataset sourceWorkspaceDataset = (IDataset)sourceWorkspace;
IWorkspaceName sourceWorkspaceName = (IWorkspaceName)sourceWorkspaceDataset.FullName;
//create source dataset name
ITableName sourceTableName = new TableNameClass();
IDatasetName sourceDatasetName = (IDatasetName)sourceTableName;
sourceDatasetName.WorkspaceName = sourceWorkspaceName;
sourceDatasetName.Name = nameOfSourceTable;
//create target workspace name
IDataset targetWorkspaceDataset = (IDataset)targetWorkspace;
IWorkspaceName targetWorkspaceName = (IWorkspaceName)targetWorkspaceDataset.FullName;
//create target dataset name
ITableName targetTableName = new TableNameClass();
IDatasetName targetDatasetName = (IDatasetName)targetTableName;
targetDatasetName.WorkspaceName = targetWorkspaceName;
targetDatasetName.Name = nameOfTargetTable;
//Open input Table to get field definitions.
ESRI.ArcGIS.esriSystem.IName sourceName = (ESRI.ArcGIS.esriSystem.IName)sourceTableName;
ITable sourceTable = (ITable)sourceName.Open();
//Validate the field names because you are converting between different workspace types.
IFieldChecker fieldChecker = new FieldCheckerClass();
IFields targetTableFields;
IFields sourceTableFields = sourceTable.Fields;
IEnumFieldError enumFieldError;
// Most importantly set the input and validate workspaces!
fieldChecker.InputWorkspace = sourceWorkspace;
fieldChecker.ValidateWorkspace = targetWorkspace;
fieldChecker.Validate(sourceTableFields, out enumFieldError, out targetTableFields);
// Load the table
IFeatureDataConverter pConverter = new FeatureDataConverterClass();
IEnumInvalidObject enumErrors = pConverter.ConvertTable(sourceDatasetName, pQueryFilter, targetDatasetName, targetTableFields, "", 500, 0);
}
catch (Exception ex)
{
bResult = false;
Log.Loging.ErrorFormat("ConvertTable Failed. {0}", ex.Message);
}
return bResult;
}