我需要在sqoop中转换为hive的SQL Server数据类型的完整列表。
就像将SQL Server timestamp
转换为hive一样string
,将SQL Server varchar
转换为hivestring
等。
在哪里可以找到完整的映射?
对于Java映射
SELECT * FROMWHERE 1=0
使用查询。除了元数据外,它将不获取任何记录。
有用的源代码:
protected String getColNamesQuery(String tableName) { // adding where clause to prevent loading a big table return "SELECT t.* FROM " + escapeTableName(tableName) + " AS t WHERE 1=0"; }
然后,它用于ResulSetMetadata
查找数据类型。
通用JDBC的有用的源代码,
int cols = results.getMetaData().getColumnCount(); ArrayListcolumns = new ArrayList (); ResultSetMetaData metadata = results.getMetaData(); for (int i = 1; i < cols + 1; i++) { String colName = metadata.getColumnLabel(i); if (colName == null || colName.equals("")) { colName = metadata.getColumnName(i); if (null == colName) { colName = "_RESULT_" + i; } } columns.add(colName); LOG.debug("Found column " + colName);
--map-column-java
在此映射上覆盖from的映射。
对于配置单元映射
使用此映射:
public static String toHiveType(int sqlType) { switch (sqlType) { case Types.INTEGER: case Types.SMALLINT: return "INT"; case Types.VARCHAR: case Types.CHAR: case Types.LONGVARCHAR: case Types.NVARCHAR: case Types.NCHAR: case Types.LONGNVARCHAR: case Types.DATE: case Types.TIME: case Types.TIMESTAMP: case Types.CLOB: return "STRING"; case Types.NUMERIC: case Types.DECIMAL: case Types.FLOAT: case Types.DOUBLE: case Types.REAL: return "DOUBLE"; case Types.BIT: case Types.BOOLEAN: return "BOOLEAN"; case Types.TINYINT: return "TINYINT"; case Types.BIGINT: return "BIGINT"; default: // TODO(aaron): Support BINARY, VARBINARY, LONGVARBINARY, DISTINCT, // BLOB, ARRAY, STRUCT, REF, JAVA_OBJECT. return null; } }
在此处检查源代码。
--map-column-hive
在此映射上覆盖from的映射。