private static bool IsPrecisionNumber(SISColumn sisColumn) { var dt = sisColumn.DATA_TYPE; var isPrecisionNumber = dt.StartsWith("doub") || dt.StartsWith("flo") || dt.StartsWith("deci"); return(isPrecisionNumber); }
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); }
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)); }
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); }
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)); }
private static string NullNotNullToString(SISColumn column) { return(column.IS_NULLABLE.Equals("YES", StringComparison.CurrentCultureIgnoreCase) ? "NULL" : "NOT NULL"); }
public static SqlTextLength FromInformationSchemaColumn(SISColumn column) { return(new SqlTextLength(column.CHARACTER_OCTET_LENGTH.Value)); }