Sqoop teradata table 具有相同的列标题

Sqoop teradata table whith same columns title

我使用 Sqoop 将数据从 teradate 导入到 Hadoop 集群时出错。

我的 tera table 有 2 个等效的列标题(不是列名称)。在我的 sqoop 作业中是否有一种自动使用 col name 而不是 col title 的方法?

我试过使用 "Select * from table" 作为查询但不起作用。

而且我无法更改 teradata 中的列标题。

这是我的工作代码:

sqoop job -Dmapred.job.queue.name=shortduration \ --create inc_My_Table \ -- import \ --connect jdbc:teradata://RCT/DATABASE=DWHBIG \ --driver com.teradata.jdbc.TeraDriver \ --username MBIGDATA -P \ --query "select a.* from My_Table a where $CONDITIONS" \ --target-dir /data/source/fb/$i \ --check-column DAT_MAJ_DWH \ --incremental append \ --last-value 2001-01-01 \ --split-by ID

有什么想法吗?谢谢

我终于找到了解决办法。我使用 AS SQL 命令为导致问题的列设置了别名!

自 Teradata JDBC Driver 16.00.00.28 起,您可以使用连接 URL 参数 COLUMN_NAME 将 getColumnName 和 getColumnLabel 的行为控制为 return 列名称、列标题或 As-clause 名称,这应该可以解决您的问题。

  • COLUMN_NAME=OFF(默认值)指定 ResultSetMetaData.getColumnName 方法应该 return AS-clause 名称(如果可用)或列名(如果可用)或列 标题,并指定 ResultSetMetaData.getColumnLabel 方法 应该 return 列标题。
  • COLUMN_NAME=ON 指定当StatementInfo包裹支持是 可用,ResultSetMetaData.getColumnName 方法应该 return 列名(如果可用),并指定 ResultSetMetaData.getColumnLabel 方法应该 return AS-clause 名称(如果可用)或列名(如果可用)或列 标题。当 StatementInfo parcel 支持是 不可用。