Beispiel #1
0
    private static bool IsPrecisionNumber(SISColumn sisColumn)
    {
        var dt = sisColumn.DATA_TYPE;
        var isPrecisionNumber = dt.StartsWith("doub") || dt.StartsWith("flo") || dt.StartsWith("deci");

        return(isPrecisionNumber);
    }
Beispiel #2
0
    private static bool IsTextualDataType(SISColumn sisColumn)
    {
        var dt = sisColumn.DATA_TYPE;
        var isTextualDataType = dt.StartsWith("nv") || dt.StartsWith("nch") || dt.StartsWith("varc") ||
                                dt.StartsWith("char");

        return(isTextualDataType);
    }
Beispiel #3
0
    private static string GetStringForTextualDataType(SISColumn sisColumn)
    {
        var textDataTypeLength = sisColumn.CHARACTER_MAXIMUM_LENGTH == -1
         ? "MAX"
         : sisColumn.CHARACTER_MAXIMUM_LENGTH.ToString();

        var text = string.Format("{0} ({1})",
                                 sisColumn.DATA_TYPE,
                                 textDataTypeLength);

        return(text);
    }
    private static AmbiguousSqlType FromInformationSchemaColumn(SISColumn column)
    {
        var ambigiousSqlType = new AmbiguousSqlType()
        {
            TypeName                   = column.DATA_TYPE,
            NumericPrecision           = column.NUMERIC_PRECISION,
            NumericScale               = column.NUMERIC_SCALE,
            FractionalSecondsPrecision = column.DATETIME_PRECISION,
            MaxCharacterLength         = column.CHARACTER_OCTET_LENGTH,
        };

        return(ambigiousSqlType);
    }
    public static SqlColumn InformationSchemaColumnToSqlColumn(SISColumn column)
    {
        var sqlColumn = new SqlColumn()
        {
            Name            = column.COLUMN_NAME,
            IsNullable      = column.IS_NULLABLE == "YES",
            OrdinalPosition = column.ORDINAL_POSITION,
            Default         = column.COLUMN_DEFAULT,
        };

        var ambigiousSqlType = FromInformationSchemaColumn(column);

        sqlColumn.SqlDataType = AmbiguousSqlTypeToSqlTypeConverter.Convert(ambigiousSqlType);
        return(sqlColumn);
    }
    public bool IsColumnPrimaryKey(SISColumn col)
    {
        if (col.TABLE_SCHEMA != InformationSchemaTable.TABLE_SCHEMA ||
            col.TABLE_NAME != InformationSchemaTable.TABLE_NAME)
        {
            var columnTableName = $"{col.TABLE_SCHEMA}.{col.TABLE_NAME}";
            var tableTableName  = $"{InformationSchemaTable.TABLE_SCHEMA}.{InformationSchemaTable.TABLE_NAME}";

            throw new Exception(
                      $"Column and Table names do not match. Col: {columnTableName}; Table:{tableTableName}");
        }

        var columnName = col.COLUMN_NAME;

        return(IsColumnPrimaryKey(columnName));
    }
Beispiel #7
0
    private static string GetStringForDataType(SISColumn sisColumn)
    {
        SqlType sqlType = SqlTypeConverter.FromInformationSchemaColumn(sisColumn);

        if (IsTextualDataType(sisColumn))
        {
            return(GetStringForTextualDataType(sisColumn));
        }

        if (IsPrecisionNumber(sisColumn))
        {
            return(GetStringForPrecisionNumberDataType(sisColumn));
        }

        return(sisColumn.DATA_TYPE);
    }
Beispiel #8
0
    private static string GetStringForPrecisionNumberDataType(SISColumn sisColumn)
    {
        if (sisColumn.DATA_TYPE.InsensitiveEquals("float"))
        {
            var text2 = string.Format("{0} ({1})",
                                      sisColumn.DATA_TYPE,
                                      sisColumn.NUMERIC_PRECISION);
            return(text2);
        }

        var text = string.Format("{0} ({1}, {2})",
                                 sisColumn.DATA_TYPE,
                                 sisColumn.NUMERIC_PRECISION,
                                 sisColumn.NUMERIC_SCALE);

        return(text);
    }
    public static SqlType FromInformationSchemaColumn(SISColumn col)
    {
        if (SqlTypes.IsDateTime(col.DATA_TYPE))
        {
            return(SqlType.DateTime(col.DATA_TYPE, col.DATETIME_PRECISION));
        }
        if (SqlTypes.IsApproximateNumeric(col.DATA_TYPE))
        {
            if (col.DATA_TYPE == "float")
            {
                return(SqlTypeFactory.Float(col.NUMERIC_PRECISION.Value));
            }
            if (col.DATA_TYPE == "real")
            {
                return(SqlTypeFactory.Real());
            }
        }
        if (SqlTypes.IsExactNumeric(col.DATA_TYPE))
        {
            return(SqlType.ExactNumericType(col.DATA_TYPE, col.NUMERIC_PRECISION, col.NUMERIC_PRECISION_RADIX));
        }
        if (SqlTypes.IsCharType(col.DATA_TYPE))
        {
            return(SqlType.TextType(col.DATA_TYPE, col.CHARACTER_MAXIMUM_LENGTH));
        }

        if (col.DATA_TYPE.Equals("uniqueidentifier", StringComparison.InvariantCultureIgnoreCase))
        {
            return(SqlType.Type(col.DATA_TYPE));
        }
        if (col.DATA_TYPE.Equals("varbinary", StringComparison.InvariantCultureIgnoreCase))
        {
            return(SqlType.Type(col.DATA_TYPE));
        }
        throw new NotImplementedException($"Unknown type {col.DATA_TYPE}");
    }
    public static SqlDbType ConvertInformationSchemaColumnToSqlDbType(SISColumn col)
    {
        var sqlType = SqlTypeConverter.FromInformationSchemaColumn(col);

        return(ConvertSqlTypeToSqlDbType(sqlType));
    }
Beispiel #11
0
 private static string NullNotNullToString(SISColumn column)
 {
     return(column.IS_NULLABLE.Equals("YES", StringComparison.CurrentCultureIgnoreCase) ? "NULL" : "NOT NULL");
 }
Beispiel #12
0
 public static SqlTextLength FromInformationSchemaColumn(SISColumn column)
 {
     return(new SqlTextLength(column.CHARACTER_OCTET_LENGTH.Value));
 }