引号中的 Sqoop 导入表参数失败

Posted

技术标签:

【中文标题】引号中的 Sqoop 导入表参数失败【英文标题】:Sqoop import table parameter in quotes failing 【发布时间】:2018-07-06 04:52:04 【问题描述】:

我正在尝试使用 sqoop 导入命令将数据从 SAP Hana 数据库导入到 hadoop,但它通过给出类似“hadoop::Poc.Emp”的表名而失败。 HANA 区分大小写,因此表名应在“”中。

sqoop import --connect "jdbc:localhost --username user --password pass --table "hadoop::Poc.Emp"

Execute getColumnInfoRawQuery : **SELECT t.* FROM hadoop::Poc.Emp AS t WHERE 1=0**
sql syntax error: incorrect syntax near "::Poc": line 1 col 17 (at pos 17) 

我想要像SELECT t.* FROM "hadoop::Poc.Emp" AS t WHERE 1=0这样的命令

不知怎的,我通过转义得到了这个

- sqoop import --connect "jdbc:localhost --username user --password pass --table \"\"hadoop::Poc.Emp\"\"

成功了 - Execute getColumnInfoRawQuery : SELECT t.* FROM "hadoop::Poc.Emp" AS t WHERE 1=0

但是后来这个错误来了 -

Finished writing jar file /tmp/sqoop-user/compile/dc0865e35ce739f216bd542d71222201/"hadoop::Poc.Emp".jar

Import failed: java.net.URISyntaxException: Relative path in absolute URI: "hadoop::Poc.Emp%22

谁能帮帮我?

【问题讨论】:

【参考方案1】:

“hadoop::Poc.Emp”到底是什么类型的对象?您是否使用 HANA 客户端工具验证了名称? 您是尝试导入 Hive 还是仅导入 HDFS 中的 /user/ 目录?

【讨论】:

'hadoop::Poc.Emp' 是一个表名。我只想导入到 /user/ 目录 我认为这不是 HANA 中的有效表名,或者至少对于 Sqoop 作为表名而言。尝试不带“.”的表名和'::' 这是一个有效的。格式就像命名空间后跟上下文后跟表名,我知道没有“。”和 '::' 它会起作用,但根据数据库的当前结构,这是我们的限制

以上是关于引号中的 Sqoop 导入表参数失败的主要内容,如果未能解决你的问题,请参考以下文章

phpmyadmin (CSV) 中的 MySQL 导入阻塞引号

Sqoop 导入安全 hbase 失败

如何在使用 EMR/Hive 将数据从 S3 导入 DynamoDB 时处理包含在引号 (CSV) 中的字段

使用内联引号将 JSON 导入 R

sqoop从hive导入数据到mysql时出现主键冲突

TypeScript 自动导入中的 WebStorm/PhpStorm 双引号