我试图在Python脚本中运行sqoop命令。通过shell命令我没有问题,但是当我试图执行python stript时:
#!/usr/bin/python
sqoopcom="sqoop import --direct --connect abcd --username abc --P --query "queryname" "
exec (sqoopcom)
我收到错误,语法无效,如何解决?
答案 0 :(得分:2)
你需要跳过" on --query param
sqoopcom="sqoop import --direct --connect abcd --username abc --P --query \"queryname\" --target-dir /pwd/dir --m 1 --fetch-size 1000 --verbose --fields-terminated-by , --escaped-by \\ --enclosed-by '\"'/dir/part-m-00000"
答案 1 :(得分:2)
您正在使用的exec
语句中的构建用于解释python程序中的python代码。
您想要的是执行外部(shell)命令。为此,您可以使用子流程模块
中的call
import subprocess
subprocess.call(["echo", "Hello", "World"])
答案 2 :(得分:0)
您可以使用: 无效的语法错误,指出您没有反击\" queryname \"
#!/usr/bin/env python
import os
sqoopcom="sqoop import --direct --connect abcd --username abc --P --query \"queryname\" "
os.system(sqoopcom)