python-3.x - Oracle SQLPLUS:监控数据复制进度
问题描述
我编写了一个 python 程序,可以帮助将数据从一个 Oracle DB 复制到另一个。它使用线程在多个线程上同时复制数据。
def run_sqlplus(sqlplus_script):
p = subprocess.Popen(['sqlplus', conn],stdin=subprocess.PIPE,
stdout=subprocess.PIPE,stderr=subprocess.PIPE)
(stdout,stderr) = p.communicate(sqlplus_script.encode('utf-8'))
stdout_lines = stdout.decode('utf-8').split("\n")
return stdout_lines
该列表指定要执行的查询
LST=[“从 WHERE BUSINESS_DATE='30-Sep-2020' AND RUN_ID=1 AND PROCESSING_LOCATION='PAC';”中选择 COUNT(1);“从 B WHERE BUSINESS_DATE='30-Sep- 中选择 COUNT(1)” 2020' AND RUN_ID=1 AND PROCESSING_LOCATION='PAC';", "COPY FROM schema/pass@DB APPEND TABLE1 using select * FROM TABLE1 WHERE BUSINESS_DATE='30-Sep-2020' ;" ]
我已将列表(LST)映射到以下线程池执行程序:
以 concurrent.futures.ThreadPoolExecutor(max_threads) 作为执行者:
results=[executor.submit(execute_queries,i) for i in LST]
for f in concurrent.futures.as_completed(results):
print(f.result())
在运行代码时,复制命令的运行时间似乎比预期的要长。有什么方法可以监控 python 中线程的进度或 Oracle DB 中的 SID/SERIAL#。
解决方案
推荐阅读
- swift - AVCaptureSession.Preset 选项
- android - Material TextInputLayout 设置两个结束图标
- azure-storage - 从 Azure 容器获取文件时遇到问题
- excel-formula - Excel - 如何根据 1 个单元格中的文本和另一个单元格中的数字在 1 个单元格中设置计算?
- javascript - 如何从 json 数据加载多个图像 - django
- mql4 - MQL4 中 BackTest 中的 ComboBox 更改值
- c - 现代 C 标准中是否有 nullptr (或等效项)之类的东西?
- flutter - 在 Flutter 中阻止部分 Slider Widget
- python - 创建新的空 GeoDataFrame 的语法
- javascript - 在 N 个区间内拆分最小值和最大值的范围