当我尝试使用
从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'.
答案 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
是您尝试登录的用户的默认数据库,则只更改表部分。