Python 初始化 db2cmd 并与 DB2 交互

Python init db2cmd and interact with DB2

如何从 Python 脚本启动 DB2 命令行环境 (Windows) 和 运行 DB2 shell EXPORT 命令并等待结果和错误处理中?

我试过运行

  process = subprocess.call(or run)(["db2cmd", "./export.bat"], 
                                    shell=True, 
                                    stdin=subprocess.PIPE, 
                                    stdout=subprocess.PIPE,
                                    stderr=subprocess.PIPE, 
                                    text=True)

  process = subprocess.run(or Popen)(["db2cmd", 
                            "db2 connect to SAMPLE user XXX using XXXXX"
                             " & db2 EXPORT TO STAFF.ixf OF IXF SELECT * FROM STAFF"])              

有效 但是

  1. 主 Python 脚本不会等待 DB2 导出完成 - 它 运行s DB2CMD 在单独的 CMD window 中并终止立即地。带导出功能的 DB2CMD 继续分别 运行;
  2. 所有输出流都是空的 - 我无法通过这种方式获得任何 errors/results。

Pyhton 3.8 脚本的最佳方法是什么

  1. 初始化 DB2 命令行环境;

  2. 连接到 DB2 数据库;

  3. 运行 EXPORT 命令并等待结果?

    如果出现错误 - 重新连接到数据库并再次运行导出。

*使用 ibm_db 不适合大表和复杂数据。

@mao 的回答很有帮助,谢谢!

  1. 在EXPORT脚本BAT文件的开头加上这个(魔法符号是什么?

      set DB2CLP=**$$**
    
  2. 在 Pyhton 脚本中使用 'call'。 Pyhton 运行并等待 EXPORT BAT

    完成
    subprocess.call("\path\to\export.bat" , shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True )
    
  3. 分析文本输出是否有错误。