sql-server - 当表处于不同模式时,如何从 SQL Server 导入所有带有 sqoop 的表?

标签 sql-server hadoop hive sqoop

当我尝试使用 sqoop 从配置单元中的 SQL Server 导入所有表时,它有效,但仅当表处于默认架构 (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)

最佳答案

您可以导入特定模式的所有表。

最后尝试 -- -schema schemaName。

如果你正在创造一份工作,我不能保证这一点。

关于sql-server - 当表处于不同模式时,如何从 SQL Server 导入所有带有 sqoop 的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32549483/

相关文章:

c# - 恢复 SQL Server 数据库失败 SMO C#

c# - SqlDependency、最小数据库权限和角色拥有的模式

python - 使用 yarn 比较器在 MapReduce Python 中进行字数统计排序

apache-spark - Spark结构化流作业停留了数小时而没有被杀死

mysql - 使用Sqoop将MySQL导入Hive时如何指定字段分隔符?

hadoop - 运行 Hive 查询时获取 ParseException

sql-server - 将 XML 数据分解为 SQL Server 数据库列的最佳方式

hadoop - Non DFS Used 到底是什么意思?

hadoop - 如何使用 Hive 处理倾斜数据?

SQL Server 根据不同标志计算累积和/条件运行总计