【问题标题】:Arithmetic operation while joining two tables in a sqoop query在 sqoop 查询中连接两个表时的算术运算
【发布时间】:2015-03-03 18:32:40
【问题描述】:

我有一个在 Teradata SQL 助手中正确运行的 Teradata 查询,但在写入 sqoop 脚本时显示错误。

查询使用如下条件对三个表进行连接:

...

From tableA as A \
Inner Join tableB as B\
Inner Join tableC as C \
On (B.ID = C.ID and (100*year(A.dt) + month(A.dt)) = C.curr_dt) \

...

我在 sqoop 中得到的错误来自乘法。

15/01/06 00:44:01 ERROR manager.SqlManager: Error executing statement: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC xx.yy.zz.ww] [Error 3706] [SQLState 42000] Syntax error: expected something between '*' and the 'year' keyword.

sqoop 的连接期间不能进行算术运算吗?我还没有找到任何资源来帮助我解决这个问题。任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • YEAR 和 MONTH 不是有效的 Teradata SQL,它们都是 ODBC 语法,由 ODBC 驱动程序自动重写。请改用EXTRACT(YEAR FROM A.dt)
  • 谢谢!如果你写一个答案,我会接受。

标签: teradata sqoop


【解决方案1】:

YEAR 和 MONTH 不是有效的 Teradata SQL,它们都是 ODBC 语法,由 ODBC 驱动程序自动重写。

改用EXTRACT(YEAR FROM A.dt)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2023-03-22
    • 2022-11-05
    • 2017-11-06
    • 1970-01-01
    • 2012-08-13
    • 2017-04-01
    相关资源
    最近更新 更多