python stdout=subprocess.pipe中的Sqoop作业
我正在尝试使用python stdout=subprocess.pipe中的Sqoop作业,python,python-3.x,sqoop,Python,Python 3.x,Sqoop,我正在尝试使用python生成Sqoop命令。我能够通过并启动Sqoop查询。我想在Sqoop命令--map column java中映射列名,并且每列中的列数不同。只有BLOB和CLOB需要映射 数据: 样本代码:- proc=subprocess.Popen(["sqoop", "eval", "--connect","jdbc:oracle:thin:@" + config["Production_host"]+":"+config["port"]+"/"+config['Producti
python
生成Sqoop
命令。我能够通过并启动Sqoop
查询。我想在Sqoop
命令--map column java
中映射列名,并且每列中的列数不同。只有BLOB
和CLOB
需要映射
数据:
样本代码:-
proc=subprocess.Popen(["sqoop", "eval", "--connect","jdbc:oracle:thin:@" + config["Production_host"]+":"+config["port"]+"/"+config['Production_SERVICE_NAME'],"--username", config["Production_User"], "--password", config["Production_Password"], "--query","SELECT column_name, data_type FROM all_tab_columns where table_name =" + "'"+ Tablename + "'"],stdout=subprocess.PIPE)
COl_Re=re.compile('(?m)(C\d+)(?=.+[CB]LOB)')
columns=COl_Re.findall(proc.stdout.read())
我能够使用上述代码获得所需的列名C459、C456、C8
。输出<代码>['C459','C456','C8']
我应该得到一个新的Sqoop
查询,格式如下
sqoop import --connect "--connect","jdbc:oracle:thin:@" + config["Production_host"]+":"+config["port"]+"/"+config['Production_SERVICE_NAME'],"--username", config["Production_User"], "--password", config["Production_Password"], --table table --fields-terminated-by '|' --map-column-java C456=String,C459=String,C8=String --hive-drop-import-delims --input-null-string '\\N' --input-null-non-string '\\N' --as-textfile --target-dir <Location> -m 1
sqoop导入--connect--connect“,”jdbc:oracle:thin:@“+config[“Production\u host”]+”:“+config[“port”+”/“+config[“Production\u SERVICE\u NAME]”,“--username”、config[“Production\u User”]、“--password”、config[“Production\u password”],--表格--以“|”结尾的字段--映射列java C456=String,C459=String,C8=字符串--配置单元放置导入delims--输入空字符串'\\N'--输入空非字符串'\\N'--作为文本文件--目标目录-m 1
我只需要动态添加这一部分
--映射列java C456=String,C459=String,C8=String
,这样我的下一个代码子流程.call
就可以使用它了。通过分配给一个变量并基于条件用参数覆盖该变量来构建sqoop语法,一旦构建了最终语法,就执行它。希望这有帮助。如果您能举一些例子,那就太好了。这一点我已经做了RND。
sqoop import --connect "--connect","jdbc:oracle:thin:@" + config["Production_host"]+":"+config["port"]+"/"+config['Production_SERVICE_NAME'],"--username", config["Production_User"], "--password", config["Production_Password"], --table table --fields-terminated-by '|' --map-column-java C456=String,C459=String,C8=String --hive-drop-import-delims --input-null-string '\\N' --input-null-non-string '\\N' --as-textfile --target-dir <Location> -m 1