hadoop—当表位于不同的模式中时,如何使用sqoop从sql server导入所有表?

5ktev3wc  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(753)

当我尝试使用sqoop从配置单元中的sqlserver导入所有表时,它可以工作,但仅当表处于默认模式时( dbo ).
当表位于不同的架构(并且有多个架构)中时,导入失败,并出现错误:

15/09/12 16:47:50 ERROR manager.SqlManager: Error executing statement: com.microsoft.sqlserver.jdbc.SQLServerException:
Invalid object name 'Carveout'.
 com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'Carveout'.
         at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
         at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
         at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
         at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
         at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
         at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
         at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
         at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
         at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285)
         at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:674)
         at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:683)
         at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:240)
         at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:223)
         at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:347)
         at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1277)
         at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1089)
         at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
         at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:396)
         at org.apache.sqoop.tool.ImportAllTablesTool.run(ImportAllTablesTool.java:105)
         at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
         at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
         at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
         at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
         at org.apache.sqoop.Sqoop.main(Sqoop.java:238)
lg40wkob

lg40wkob1#

您可以将表列表作为schemaname.dbo.tablename传递..在sqoop导入并在--query select*from schemaname.dbo.tablename中使用时对其进行迭代

0vvn1miw

0vvn1miw2#

可以导入特定架构的所有表。
在结尾尝试--schema schemaname。
如果你在创造工作机会,我不能保证这一点。

相关问题