コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }