in v2/datastream-common/src/main/java/com/google/cloud/teleport/v2/datastream/utils/DataStreamClient.java [426:478]
public StandardSQLTypeName convertOracleToBigQueryColumnType(OracleColumn column) {
String dataType = column.getDataType();
switch (dataType) {
case "ANYDATA":
case "BFILE":
case "CHAR":
case "CLOB":
case "NCHAR":
case "NCLOB":
case "NVARCHAR2":
case "ROWID":
case "UDT":
case "UROWID":
case "VARCHAR":
case "VARCHAR2":
case "XMLTYPE":
return StandardSQLTypeName.STRING;
case "SMALLINT":
case "INTEGER":
return StandardSQLTypeName.INT64;
case "BINARY DOUBLE":
case "BINARY FLOAT":
case "BINARY_DOUBLE":
case "BINARY_FLOAT":
case "FLOAT":
case "REAL":
case "DOUBLE":
return StandardSQLTypeName.FLOAT64;
case "DECIMAL":
case "DOUBLE PRECISION":
case "NUMBER":
return StandardSQLTypeName.BIGNUMERIC;
case "BLOB":
case "RAW":
case "LONG_RAW":
return StandardSQLTypeName.BYTES;
case "DATE":
return StandardSQLTypeName.DATETIME;
default:
}
if (TIMESTAMP_PATTERN.matcher(dataType).matches()) {
return StandardSQLTypeName.TIMESTAMP;
} else if (TIMESTAMP_WITH_TIMEZONE_PATTERN.matcher(dataType).matches()) {
return StandardSQLTypeName.TIMESTAMP; // TODO: what type do we want here?
} else if (TIMESTAMP_WITH_LOCAL_TIMEZONE_PATTERN.matcher(dataType).matches()) {
return StandardSQLTypeName.TIMESTAMP; // TODO: what type do we want here?
} else {
LOG.warn("Datastream Oracle Type Unknown, Default to String: \"{}\"", dataType);
return StandardSQLTypeName.STRING;
}
}