/// <summary> /// 在列表分区过程中获取定义分区信息的SQL(辅助) /// </summary> /// <param name="value"></param> /// <param name="BasicFieldDataType"></param> /// <returns></returns> private string GetPartitionInfo(string value, EnumDBFieldType BasicFieldDataType, string partitionName, string tablespaceName) { string sqlSection = string.Empty; //根据字段类型选择分区列SQL模板 switch (BasicFieldDataType) { case EnumDBFieldType.UnKnown: break; case EnumDBFieldType.FTNumber: sqlSection = SqlTemplate.PartitionInfo.PARTITION_INFO_01; break; case EnumDBFieldType.FTString: sqlSection = SqlTemplate.PartitionInfo.PARTITION_INFO_02; break; case EnumDBFieldType.FTDate: break; case EnumDBFieldType.FTDatetime: sqlSection = SqlTemplate.PartitionInfo.PARTITION_INFO_03; break; default: break; } //替换SQL模板参数 sqlSection = sqlSection.Replace("{partition_name}", partitionName).Replace("{values}", value); sqlSection = sqlSection.Replace("{tablespace_name}", tablespaceName); this._partitionIndex.Add(partitionName, value); return(sqlSection); }
/// <summary> /// 在列表分区过程中获取定义分区信息SQL /// </summary> /// <param name="UniqueValueTable"></param> /// <param name="BasicFieldDataType"></param> /// <returns></returns> private string GetListPartitionInfo(DataTable UniqueValueTable, EnumDBFieldType BasicFieldDataType) { string sqlSection = string.Empty; List <string> UniqueValueSet = new List <string>(); this._partitionIndex = new Dictionary <string, string>(); //获取分区列数据 foreach (DataRow dataRow in UniqueValueTable.Rows) { UniqueValueSet.Add(dataRow[this._basicField].ToString()); } string partitionName = string.Empty; //在SQL模板中添加分区列 for (int i = 0; i < UniqueValueSet.Count; i++) { partitionName = "PARTITION_" + this._basicField + "_" + i; sqlSection += GetPartitionInfo(UniqueValueSet[i], BasicFieldDataType, partitionName, this._tablespaceSet[i]); sqlSection += ","; } //在最后添加[DEFAULT]分区 partitionName = "PARTITION_" + this._basicField + "_DEFAULT"; sqlSection += SqlTemplate.PartitionInfo.PARTITION_INFO_04; sqlSection = sqlSection.Replace("{partition_name}", partitionName); sqlSection = sqlSection.Replace("{tablespace_name}", this._tablespaceSet[this._tablespaceSet.Count - 1]); //在分区明细字典中添加分区名与分区列 this._partitionIndex.Add(partitionName, "DEFAULT"); return(sqlSection); }