使用 sqoop 导入数据,表名带有 $

Posted

技术标签:

【中文标题】使用 sqoop 导入数据,表名带有 $【英文标题】:Import data using sqoop with $ on the table name 【发布时间】:2016-03-07 04:54:00 【问题描述】:

我在使用 sqoop 从 Oracle 数据库导入数据到 hive 时遇到错误:

Sqoop 命令如下:

sqoop import \
--connect jdbc:oracle:thin:@connectionString/Database \
--username USERNAME \
--password-file /path/password/file \
--query "SELECT * FROM \"DBO.LOG$_TEST_TABLE\" WHERE \$CONDITIONS" \
--hcatalog-database HIVE_DB \
--hcatalog-table LOG__TEST_TABLE \
-m 1;

这是运行命令后的错误信息:

ERROR manager.SqlManager: Error executing statement: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

oracle数据库中存在表,但是使用的sql语句(打印在屏幕上)是INFO manager.SqlManager: Executing SQL statement: SELECT * FROM DBO.LOG WHERE (1=0)

在指定表名的'$'之后,表名已被剪切。

【问题讨论】:

不要认为名称为$的表可以使用sqoop导入 【参考方案1】:

已经通过在所有具有 $ 的列或表名中添加 \$ 来解决该问题。

【讨论】:

以上是关于使用 sqoop 导入数据,表名带有 $的主要内容,如果未能解决你的问题,请参考以下文章

从 SAP HANA 导入数据时出现 sqoop 问题

利用SQOOP将数据从数据库导入到HDFS(并行导入,增量导入)

在 sqoop 中从 RDBMS 导入选定的表

SQOOP 导入:删除 ORACLE CLOB 数据类型中的 pilcrow

在 RDBMS 中没有主键的 Sqoop 导入

hive_建表及导入数据