2016-09-06 304 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背景。我正在考虑使用“〜〜”或“〜”。 –