2017-10-17 417 views
0

我必須編寫一個scoop導入腳本,它從數據la_crime中僅從2016年起提取某些列我的腳本低於「Sqoop導入:命令--password:命令未找到,--table:命令未找到

sqoop import \ 
--connect jdbc:mysql://XXXXXXXXXXX \ 
--driver com.mysql.jdbc.Driver \ 
--username XXXX \ 
--password XXXX \ 
--table la_crime \ 
--query "SELECT DR_NUMBER,DATE_REPORTED,DATE_OCCURED,TIME_OCCURED,AREA_ID,AREA_N AME,REPORTING_DISTRICT,CRIME_CODE,CRIME_CODE_DESC,VICTIM_AGE,VICTIM _GENDER,VICTIM_DESCENT,ADDRESS,CROSS_STREET,AUTO_ID FROM la_crime WHERE\$YEAR=2016\ 
--target-dir /user/sqoop_script \ 
-m 1 

你能告訴我,如果我的代碼是錯的地方我有什麼變化,使

回答

0

您可以使用下面的語法來導入:??

sqoop進口\

--connect JDBC:MySQL的://本地主機/ yourdatabase \

--driver com.mysql.jdbc.Driver \

--username XXXX \

--password XXXX \

--table la_crime \

--query「SELECT DR_NUMBER,DATE_REPORTED,DATE_OCCURED,TIME_OCCURED,AREA_ID,AREA_N AME,REPORTING_DISTRICT,CRIME_CODE,CRIME_CODE_DESC,VICTIM_AGE,V ICTIM _gender,VICTIM_DESCENT,ADDRESS,CROSS_STREET,AUTO_ID FROM la_crime WHERE $ YEAR = 2016' \

--target-DIR /用戶/ sqoop_script \

-m 1

詳情,請參閱「 Sqoop User Guide「。

0

您嘗試的命令在query選項中有些問題,首先需要在最後關閉雙引號。其次,對於我來說,使用變量來指定過濾年份的列似乎很奇怪。

;第三,如果使用query選項是強制性的,以包括$CONDITIONS令牌既然你使用雙引號來發出查詢你需要\$CONDITIONS而不是僅僅$CONDITIONS來把它當作一個shell禁止你的shell變量。

此外,如果您使用的是query選項,則不應使用table選項。

我認爲這將是你要找的命令:

sqoop import \ 
--connect jdbc:mysql://XXXXXXXXXXX \ 
--driver com.mysql.jdbc.Driver \ 
--username XXXX \ 
--password XXXX \ 
--query "SELECT DR_NUMBER,DATE_REPORTED,DATE_OCCURED,TIME_OCCURED,AREA_ID,AREA_N AME,REPORTING_DISTRICT,CRIME_CODE,CRIME_CODE_DESC,VICTIM_AGE,VICTIM _GENDER,VICTIM_DESCENT,ADDRESS,CROSS_STREET,AUTO_ID FROM la_crime WHERE YEAR = 2016 AND $CONDITIONS" \ 
--target-dir /user/sqoop_script \ 
-m 1