2016-09-06 303 views
0

我試圖與蟒蛇運行Sqoop與使用python 3子

subprocess.call(["sqoop","import","--connect", "jdbc:oracle:thin:@hostname:1521/ARSMTREP","--username", "username" ,"--password", "password","--table","ARADMIN."+line,"--as-textfile","--target-dir","/data/"+line]) 

能夠執行這個代碼,但運行Sqoop命令時,我試圖與執行「--fields終止按」 +」 「+」 '〜'」它給工具導入錯誤

process=subprocess.call(["sqoop","import","--connect", "jdbc:oracle:thin:@hostname:1521/ARSMTREP","--username", "hadoop_user" ,"--password", "password","--table","ARADMIN."+line,"--fields-terminated-by"+" "+"'~'","--as-textfile","--target-dir","/data/"+line]) 

錯誤解析參數進口

回答

0
process=subprocess.call(["sqoop","import","--connect", "jdbc:oracle:thin:@hostname:1521/ARSMTREP","--username", "hadoop_user" ,"--password", "password","--table","ARADMIN."+line,"--fields-terminated-by","~","--as-textfile","--target-dir","/data/"+line]) 

此代碼調用sqoop命令和從Linux終端執行它們。子流程調用Python subprocess您還可以使用os.system()從python執行Sqoop查詢。但是更可取的是調用Subprocess。 subprocess.call()中的參數沒有空格,否則會提供錯誤。

在上面的代碼中,所有參數都是Sqoop命令,只有line是從列表中獲取表名的變量。

+0

請嘗試添加一些文本來解釋代碼的作用。 – Hidde

0

嘗試:

process=subprocess.call(["sqoop","import","--connect", "jdbc:oracle:thin:@hostname:1521/ARSMTREP","--username", "hadoop_user" ,"--password", "password","--table","ARADMIN."+line,"--fields-terminated-by","'~'","--as-textfile","--target-dir","/data/"+line])

+0

此代碼正確執行代碼,但更改文件分隔符 –

+0

@IndrajitSwain Ok.actually我不是Python背景。我正在考慮使用「〜〜」或「〜」。 –