由于数据库表在列名称中有空格,因此实现这一点非常痛苦 .

我可以让下面的工作,例如:

sqoop eval \
--connect "jdbc:connect_string"
--username useranem
--password pass
--query "select [Entry No_] as entry_nr,[Transaction No_] as transaction_nr,[G_L Account No_] as account_nr from [DBNAME $\GL Entry] with (nolock)"

工作得很好(注意列名和表名中的空格) . 但是,第二个我添加了一个where子句,它会抛出一个错误 .

例如:

sqoop eval \
--connect "jdbc:connect_string"
--username useranem
--password pass
--query "select * from [DBNAME $\GL Entry] with (nolock) where [Entry No_] > 0 and year([Posting Date])=2018 and \$CONDITIONS "

这是错误:

WARN tool.EvalSqlTool:SQL异常执行语句:com.microsoft.sqlserver.jdbc.SQLServerException:无效的伪列“$ CONDITIONS”

在使用 --split-by 子句中的一个列时,我遇到了同样的问题,因为列名有一个空格 .

任何有专业知识的人都会提出建议 .