如果我为oracle thin提供(--connect / - user / - password),我可以在不提供--driver参数的情况下运行Sqoop。
但我需要使用我的项目中使用的自定义JDBC驱动程序(它正确实现java.sql.Driver接口)而不是oracle.jdbc.OracleDriver来运行它。
我只能通过--driver
参数证明它无法使其正常工作。
this suggestion根本没用。
如何将Sqoop与自定义数据库访问驱动程序一起使用? 如何克服我得到的错误?
如果它与连接管理器有关,有人可以告诉我应该指定哪个连接管理器吗?
谢谢!
以下是我实际上要做的事情:
./sqoop.sh import \
--fs $HDFS --jt $JT \
--connect <cutom-connection-string> --username username --password password \
--table SYS.ALL_TABLES --split-by TABLE_NAME --target-dir /temp/try/110 --verbose \
--driver xx.xx.xx.MyDriver
我收到错误:
ERROR manager.SqlManager:执行语句时出错: java.sql.SQLException:ORA-00933:SQL命令未正确结束
更多错误信息:
DEBUG tool.BaseSqoopTool: Enabled debug logging.
WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
DEBUG sqoop.ConnFactory: Loaded manager factory: com.cloudera.sqoop.manager.DefaultManagerFactory
WARN sqoop.ConnFactory: Parameter --driver is set to an explicit driver however appropriate connection manager is not being set (via --connection-manager). Sqoop is going to fall back to org.apache.sqoop.manager.GenericJdbcManager. Please specify explicitly which connection manager should be used next time.
INFO manager.SqlManager: Using default fetchSize of 1000
INFO tool.CodeGenTool: Beginning code generation
INFO xx.xx.xx.MyDriver: xx.xx.xx.MyDriver registered successfully.
DEBUG manager.SqlManager: No connection paramenters specified. Using regular API for making connection.
INFO xx.xx.xx.MyDriver: Returning database connection
DEBUG manager.SqlManager: Using fetchSize for next query: 1000
INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM SYS.ALL_TABLES AS t WHERE 1=0
ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: ORA-00933: SQL command not properly ended
java.sql.SQLException: ORA-00933: SQL command not properly ended
答案 0 :(得分:2)
正确使用了自定义JDBC驱动程序。问题似乎是在使用的Generic jdbc连接器中,似乎产生无效查询。您可能还需要通过将驱动程序替换为自定义驱动程序来在Oracle connector中分叉构建。
Jarcec