sqoop无效对象名错误,原因是sql server上的表包含点时生成的from子句错误

oyxsuwqo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(317)

我必须在hadoop上使用sqoop和现有的mssql数据库结构。
所有权限似乎都正常。使用授权用户 john 使用sql studio,正确的工作查询如下所示:

SELECT TOP 1000 [ksttyp_id]
      ,[orgunit_nr]
      ,[ksttyp_nr]
      ,[bezeichnung]
  FROM [egec01_t].[integris].[kst_typ]

我运行此导入命令:

sqoop import --connect "jdbc:sqlserver://example.com;username=john;password=1234;database=egec01_t" --table "integris.kst_typ" --target-dir /home/sqoop/ -as-textfile

期望的from子句是:

FROM [egec01_t].[integris].[kst_typ]

相反,我得到:

Executing SQL statement: SELECT t.* FROM [integris.kst_typ] AS t WHERE 1=0

error manager.sqlmanager:执行语句时出错:com.microsoft.sqlserver.jdbc.sqlserverexception:对象名“integris.kst\u typ”无效。
我不确定这是否与sqoop或sqlmanager或codegentool有关?
我也尝试了常规查询来列出所有数据库:

sqoop list-databases...

同样的问题:
error manager.catalogquerymanager:未能列出数据库com.microsoft.sqlserver.jdbc.sqlserverexception:无效的对象名“sys.dat…”。。。
归根结底,用点代替下划线似乎是个问题:sqoop无法导入带点的表
但不幸的是,我不得不使用现有的结构。
我发布了一个问题,但还没有得到回应:https://issues.apache.org/jira/browse/sqoop-2706
可能相关问题:https://issues.apache.org/jira/browse/sqoop-476
有没有一种方法可以转义表名?

oxcyiej7

oxcyiej71#

你试过了吗

--table "egec01_t.integris.kst_typ"

相关问题