运行 Sqoop with python 3 使用子进程

Run Sqoop with python 3 using subprocess

我正在尝试 运行 Sqoop 命令与 python

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

能够执行此代码,但是当我尝试使用“--fields-terminated-by”+“+”‘~’”执行时,出现工具导入错误

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])

Error parsing arguments for import

尝试:

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])

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() 中的参数中没有白色的 space 否则它会提供错误。

在上面的代码中,所有参数都是 Sqoop 命令,只有 line 是从列表中获取 table 名称的变量。