我正在尝试用python运行sqoop命令
subprocess.call(["sqoop","import","--connect", "jdbc:oracle:thin:@hostname:1521/ARSMTREP","--username", "username" ,"--password", "password","--table","ARADMIN."+line,"--as-textfile","--target-dir","/data/"+line])
能够执行这段代码,但当我试图执行“--字段以“+”+“~”结尾时,它给出了工具导入错误
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])
分析导入参数时出错
2条答案
按热度按时间vxf3dgd41#
尝试:
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])
avkwfej42#
这段代码调用sqoop命令并从linux终端执行它们。子进程调用python子进程,也可以使用
os.system()
从python执行sqoop查询。但最好是调用子进程。参数中没有空格subprocess.call()
否则它将提供错误。在上面的代码中,所有参数都是sqoop命令
line
是从列表中获取表名的变量。