【发布时间】: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)。 -
谢谢!如果你写一个答案,我会接受。