2017-05-04 105 views
1

我們目前正在使用sqoop將數據從SAP Hana移動到Hadoop。 SAP Hana表在表名和列名中使用'\'字符。我們的命令sqoop命令正在工作,但是當我使用「Split by」時它失敗了。任何人都可以幫忙。從SAP HANA導入數據時出現sqoop問題

代碼:

/usr/hdp/sqoop/bin/sqoop import \ 
--connect "jdbc:sap://***-***.**.*****.com:30015" \ 
--username DFIT_SUPP_USR --password **** \ 
--driver com.sap.db.jdbc.Driver \ 
--query "select '\"/BA1/C55LGENT/\"' FROM \"_SYS_BIC\".\"sap.fs.frdp.300.RDL/BV_RDL_ZAFI______Z_SLPD\" where \$CONDITIONS and (\"/BA1/C55LGENT\") IN ('0000000671','0000000615') and (\"/BA1/C55LGENT\" != '0000000022') AND (\"/BIC/ZCINTEIND\" ='01') AND (\"/BA1/IGL_ACCOUNT\") IN ('0000401077', '0000401035') AND (\"/BA1/C55POSTD\">= '20170101' AND \"/BA1/C55POSTD\" <='20170101')" \ 
--target-dir /user/arekapalli/pfit_export_test12 \ 
--delete-target-dir \ 
--split-by //BA1//C55LGENT// \ 
-m 10 

下面是我們得到了錯誤..

所致:com.sap.db.jdbc.exceptions.JDBCDriverException:SAP DBTech JDBC:[257](在12 ):SQL語法錯誤:不正確的語法附近 「/」:行1列12(在pos 12)

+0

你看過[這個](http://stackoverflow.com/questions/37356777/using-sqoop1-with-sap-hana-using-a-table-name-that-c​​ontains-forward-slash-ca/ )或[this](http://stackoverflow.com/questions/40633666/sqoop-import-to-hive-from-hana-with-special-characters-in-table-name)?兩種不同的方案。搜索了一下,任何地方都沒有好的答案,甚至發佈了[bug](https://issues.apache.org/jira/browse/SQOOP-1722),這是未解決的。 – szako

回答

0

你的問題很可能是在這裏

--query "select '\"/BA1/C55LGENT/\"' FROM \"_SYS_BIC\".\"sap.fs.frdp.300.RDL/BV_RDL_ZAFI______Z_SLPD\" where \$CONDITIONS and (\"/BA1/C55LGENT\") IN ('0000000671','0000000615') and (\"/BA1/C55LGENT\" != '0000000022') AND (\"/BIC/ZCINTEIND\" ='01') AND (\"/BA1/IGL_ACCOUNT\") IN ('0000401077', '0000401035') AND (\"/BA1/C55POSTD\">= '20170101' AND \"/BA1/C55POSTD\" <='20170101')" \ 

您假設「\」是從終端使用的轉義字符,可能是錯誤的。請嘗試以下

--query 'select "/BA1/C55LGENT/" FROM "_SYS_BIC"."sap.fs.frdp.300.RDL/BV_RDL_ZAFI______Z_SLPD" where \$CONDITIONS and ("/BA1/C55LGENT") IN ("0000000671","0000000615") and ("/BA1/C55LGENT" != "0000000022") AND ("/BIC/ZCINTEIND" ="01") AND ("/BA1/IGL_ACCOUNT") IN ("0000401077", "0000401035") AND ("/BA1/C55POSTD">= "20170101" AND "/BA1/C55POSTD" <="20170101")' \ 

我不是一個SAP用戶,所以也許可以與查詢不對勁,反正你可以看到,我刪除了所有的「從查詢和我用作爲查詢

的分隔符