private void setupColumn()

in hbase11xsqlwriter/src/main/java/com/alibaba/datax/plugin/writer/hbase11xsqlwriter/HbaseSQLWriterTask.java [228:318]


    private void setupColumn(int pos, int sqlType, Column col) throws SQLException {
        if (col.getRawData() != null) {
            switch (sqlType) {
                case Types.CHAR:
                case Types.VARCHAR:
                    ps.setString(pos, col.asString());
                    break;

                case Types.BINARY:
                case Types.VARBINARY:
                    ps.setBytes(pos, col.asBytes());
                    break;

                case Types.BOOLEAN:
                    ps.setBoolean(pos, col.asBoolean());
                    break;

                case Types.TINYINT:
                case Constant.TYPE_UNSIGNED_TINYINT:
                    ps.setByte(pos, col.asLong().byteValue());
                    break;

                case Types.SMALLINT:
                case Constant.TYPE_UNSIGNED_SMALLINT:
                    ps.setShort(pos, col.asLong().shortValue());
                    break;

                case Types.INTEGER:
                case Constant.TYPE_UNSIGNED_INTEGER:
                    ps.setInt(pos, col.asLong().intValue());
                    break;

                case Types.BIGINT:
                case Constant.TYPE_UNSIGNED_LONG:
                    ps.setLong(pos, col.asLong());
                    break;

                case Types.FLOAT:
                    ps.setFloat(pos, col.asDouble().floatValue());
                    break;

                case Types.DOUBLE:
                    ps.setDouble(pos, col.asDouble());
                    break;

                case Types.DECIMAL:
                    ps.setBigDecimal(pos, col.asBigDecimal());
                    break;

                case Types.DATE:
                case Constant.TYPE_UNSIGNED_DATE:
                    ps.setDate(pos, new java.sql.Date(col.asDate().getTime()));
                    break;

                case Types.TIME:
                case Constant.TYPE_UNSIGNED_TIME:
                    ps.setTime(pos, new java.sql.Time(col.asDate().getTime()));
                    break;

                case Types.TIMESTAMP:
                case Constant.TYPE_UNSIGNED_TIMESTAMP:
                    ps.setTimestamp(pos, new java.sql.Timestamp(col.asDate().getTime()));
                    break;

                default:
                    throw DataXException.asDataXException(HbaseSQLWriterErrorCode.ILLEGAL_VALUE,
                            "不支持您配置的列类型:" + sqlType + ", 请检查您的配置 或者 联系 Hbase 管理员.");

            } // end switch
        } else {
            // 没有值,按空值的配置情况处理
            switch (cfg.getNullMode()){
                case Skip:
                    // 跳过空值,则不插入该列,
                    ps.setNull(pos, sqlType);
                    break;

                case Empty:
                    // 插入"空值",请注意不同类型的空值不同
                    // 另外,对SQL来说,空值本身是有值的,这与直接操作HBASE Native API时的空值完全不同
                    ps.setObject(pos, getEmptyValue(sqlType));
                    break;

                default:
                    // nullMode的合法性在初始化配置的时候已经校验过,这里一定不会出错
                    throw DataXException.asDataXException(HbaseSQLWriterErrorCode.ILLEGAL_VALUE,
                        "Hbasewriter 不支持该 nullMode 类型: " + cfg.getNullMode() +
                        ", 目前支持的 nullMode 类型是:" + Arrays.asList(NullModeType.values()));
            }
        }
    }