def METHOD_NAME(self, column: Series, dtype: str) -> str:
    if dtype in (
        PandasTypes.MIXED,
        PandasTypes.UNKNOWN_ARRAY,
        PandasTypes.COMPLEX,
        PandasTypes.OBJECT,
    ):
        return 'text'
    elif dtype in (PandasTypes.DATETIME, PandasTypes.DATETIME64):
        try:
            if column.dt.tz:
                return 'datetime2'
        except AttributeError:
            pass
        return 'datetime2'
    elif dtype == PandasTypes.TIME:
        try:
            if column.dt.tz:
                return 'time'
        except AttributeError:
            pass
        return 'time'
    elif dtype == PandasTypes.DATE:
        return 'date'
    elif dtype == PandasTypes.STRING:
        return 'char(255)'
    elif dtype == PandasTypes.CATEGORICAL:
        return 'text'
    elif dtype == PandasTypes.BYTES:
        return 'varbinary(255)'
    elif dtype in (PandasTypes.FLOATING, PandasTypes.DECIMAL, PandasTypes.MIXED_INTEGER_FLOAT):
        return 'decimal'
    elif dtype == PandasTypes.INTEGER:
        max_int, min_int = column.max(), column.min()
        if np.int16(max_int) == max_int and np.int16(min_int) == min_int:
            return 'bigint'
        elif np.int32(max_int) == max_int and np.int32(min_int) == min_int:
            return 'bigint'
        else:
            return 'bigint'
    elif dtype == PandasTypes.BOOLEAN:
        return 'char(52)'
    elif dtype in (PandasTypes.TIMEDELTA, PandasTypes.TIMEDELTA64, PandasTypes.PERIOD):
        return 'bigint'
    elif dtype == PandasTypes.EMPTY:
        return 'char(255)'
    else:
        print(f'Invalid datatype provided: {dtype}')
    return 'char(255)'