Apache Scoop从SQL Server导入限定表

时间:2016-06-25 14:52:31

标签: sql-server cloudera sqoop

当我尝试使用

从SQL Server导入表时
sqoop import \
  -m 1 \
 --connect jdbc:sqlserver://Arwen:1433 \
 --username=bods \
 --password=***\
 --table datamart.dbo.fct_txn
 --compression-codec=snappy \
 --as-avrodatafile \
 --warehouse-dir=/user/tkidb

sqoop似乎创建了错误的查询语法。显然它需要一个不合格的表名。那么括号就行了。如何解决这个问题?

16/06/25 07:44:55 INFO tool.CodeGenTool: Beginning code generation
16/06/25 07:44:57 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM [datamart.dbo.fct_txn] AS t WHERE 1=0
16/06/25 07:44:57 ERROR manager.SqlManager: Error executing statement: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'datamart.dbo.fct_txn'.

1 个答案:

答案 0 :(得分:0)

基于错误日志中的查询:

SELECT t.* FROM [datamart.dbo.fct_txn] AS t WHERE 1=0

问题出在引号[datamart.dbo.fct_txn]左右,正确的语法必须是[datamart].[dbo].[fct_txn]datamart.dbo.fct_txn。尝试更改两个字符串:

--connect 'jdbc:sqlserver://Arwen:1433;database=datamart' \
--table fct_txn

如果datamart是您尝试登录的用户的默认数据库,则只更改部分。