database - sqoop 从 db2 特定模式导入所有到配置单元

标签 database hadoop jdbc db2 sqoop

我尝试使用以下命令行从 DB2 中的特定模式导入所有表。

sqoop import-all-tables  --username user --password pass \
--connect jdbc:db2://myip:50000/databs:CurrentSchema=testdb \
--driver com.ibm.db2.jcc.DB2Driver  --fields-terminated-by ',' \
--lines-terminated-by '\n' --hive-database default --hive-import --hive-overwrite \
--create-hive-table -m 1;

遇到以下错误

    2017-05-02 09:21:18,474 ERROR - [main:] ~ Error reading database metadata: 
    com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10051][4.11.77] 
    Invalid database URL syntax: 
    jdbc:db2://myip:50000/msrc:CurrentSchema=testdb. ERRORCODE=-4461, 
    SQLSTATE=42815 (SqlManager:43)
    com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10051][4.11.77] 
    Invalid database URL syntax: 
    jdbc:db2://myip:50000/msrc:CurrentSchema=testdb. ERRORCODE=-4461, 
    SQLSTATE=42815
        at com.ibm.db2.jcc.am.gd.a(gd.java:676)
        at com.ibm.db2.jcc.am.gd.a(gd.java:60)
        at com.ibm.db2.jcc.am.gd.a(gd.java:85)
        at com.ibm.db2.jcc.DB2Driver.tokenizeURLProperties(DB2Driver.java:911)
        at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:408)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at 
   org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:885)
        at 
  org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
        at org.apache.sqoop.manager.SqlManager.listTables(SqlManager.java:520)
        at 
    org.apache.sqoop.tool.ImportAllTablesTool.run(ImportAllTablesTool.java:95)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
    Caused by: java.util.NoSuchElementException
        at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
        at java.util.StringTokenizer.nextToken(StringTokenizer.java:377)
        at com.ibm.db2.jcc.DB2Driver.tokenizeURLProperties(DB2Driver.java:899)
        ... 13 more
    Could not retrieve tables list from server
   2017-05-02 09:21:18,696 ERROR - [main:] ~ manager.listTables() returned null 
    (ImportAllTablesTool:98)
   [

最佳答案

命令:

 sqoop import-all-tables \
 --driver com.ibm.db2.jcc.DB2Driver \
 --connect jdbc:db2://myip:50000/databs \
 --username username --password password \
 --hive-database default --hive-import --m 1 \
 --create-hive-table --hive-overwrite

import-all-tables 工具将一组表从 RDBMS 导入到 HDFS。来自每个表的数据存储在 HDFS 中的单独目录中。

要使 import-all-tables 工具有用,必须满足以下条件:

  • 每个表必须有一个单列主键。
  • 您必须打算导入每个表的所有列。
  • 您不得打算使用非默认拆分列,也不得通过 WHERE 子句强加任何条件。

关于database - sqoop 从 db2 特定模式导入所有到配置单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734425/

相关文章:

git - 如何将代码从边缘节点部署到 hadoop 集群以使用 Oozie 对其进行调度?

mysql - 每条记录的数据至少出现一次

sql - postgresql 无法导入数据库

mysql 查询导致带有数字符号的空白页?

sql - SQL 数据库中的函数依赖关系 范式

hadoop - HDFS 中文件的 ctime

hadoop - Hadoop 中的 mapred.child.javaopts 参数 - 读取序列化的 HashMap

oracle - OCI 无效操作 ORA-01010

java - Postgres UUID JDBC 不工作

java - 将 SQL NUMERIC[10,0] 映射到 java 类型