通过 sqoop 在 hana 上导入 sap bw
import sap bw over hana via sqoop
目前我正在尝试使用 sqoop 导入 sap hana table。这里我遇到了table名称和列名称都包含正斜杠“/”的问题。
对于 table 名称,我可以使用查询选项并转义 table 名称作为解决方法。但是如果我想用不同的映射器导入 table,我想结合使用 -m 选项和 --split-by。这里我不能在列名中指定“/”而不会出现以下错误。
20/06/26 08:05:02 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [257] (at 12): sql syntax error: incorrect syntax near "/": line 1 col 12 (at pos 12)
sqoop 生成的查询看起来像这样
SELECT MIN(/SOMETHING/KEY_COLUMN), MAX(/SOMETHING/KEY_COLUMN) FROM (select * from SCHEMA."/SOMETHING/TABLE_NAME") AS t1
声明:
sqoop import -D org.apache.sqoop.splitter.allow_text_splitter=true \
--driver com.sap.db.jdbc.Driver \
--connect jdbc:sap://alias:port/ \
--split-by "/SOMETHING/KEY_COLUMN" \
--target-dir /target-dir \
--delete-target-dir \
--query "select * from SCHEMA.\"/SOMETHING/TABLE_NAME\" where 1=1 AND $CONDITIONS" \
--as-parquetfile \
--username username \
--password pw \
--num-mappers 4 \
--verbose
如何正确转义 --split-by 列?
它与使用
一起工作
--split - by "("/SOMETHING/KEY_COLUMN")"\
sqoop
import -D org.apache.sqoop.splitter.allow_text_splitter = true\
--driver com.sap.db.jdbc.Driver\
--connect jdbc: sap: //alias:port/ \
--split - by "(\"/SOMETHING/KEY_COLUMN\")"\
--target - dir / target - dir\
--delete - target - dir\
--query "select * from SCHEMA.\"/SOMETHING/TABLE_NAME\" where 1=1 AND $CONDITIONS"\
--as - parquetfile\
--username username\
--password pw\
--num - mappers 4\
--verbose
目前我正在尝试使用 sqoop 导入 sap hana table。这里我遇到了table名称和列名称都包含正斜杠“/”的问题。
对于 table 名称,我可以使用查询选项并转义 table 名称作为解决方法。但是如果我想用不同的映射器导入 table,我想结合使用 -m 选项和 --split-by。这里我不能在列名中指定“/”而不会出现以下错误。
20/06/26 08:05:02 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [257] (at 12): sql syntax error: incorrect syntax near "/": line 1 col 12 (at pos 12)
sqoop 生成的查询看起来像这样
SELECT MIN(/SOMETHING/KEY_COLUMN), MAX(/SOMETHING/KEY_COLUMN) FROM (select * from SCHEMA."/SOMETHING/TABLE_NAME") AS t1
声明:
sqoop import -D org.apache.sqoop.splitter.allow_text_splitter=true \
--driver com.sap.db.jdbc.Driver \
--connect jdbc:sap://alias:port/ \
--split-by "/SOMETHING/KEY_COLUMN" \
--target-dir /target-dir \
--delete-target-dir \
--query "select * from SCHEMA.\"/SOMETHING/TABLE_NAME\" where 1=1 AND $CONDITIONS" \
--as-parquetfile \
--username username \
--password pw \
--num-mappers 4 \
--verbose
如何正确转义 --split-by 列?
它与使用
一起工作--split - by "("/SOMETHING/KEY_COLUMN")"\
sqoop
import -D org.apache.sqoop.splitter.allow_text_splitter = true\
--driver com.sap.db.jdbc.Driver\
--connect jdbc: sap: //alias:port/ \
--split - by "(\"/SOMETHING/KEY_COLUMN\")"\
--target - dir / target - dir\
--delete - target - dir\
--query "select * from SCHEMA.\"/SOMETHING/TABLE_NAME\" where 1=1 AND $CONDITIONS"\
--as - parquetfile\
--username username\
--password pw\
--num - mappers 4\
--verbose