我正在使用 python 子进程来运行 mysqlimport 命令。为了跟踪上传进度,我使用了命名管道和 pipe_viewer。这是另一个类似的问题。
子进程 Pipes 正在运行,没有任何错误,但 mysqlimport 命令未将数据上传到所需的表。
import subprocess, os, sys
os.mkfifo('named_pipe')
pv = subprocess.Popen(
["pv", "-f", "file.csv", ">", "named_pipe"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
pro = subprocess.Popen(
["mysqlimport", "--ignore-lines=1", "--fields-terminated-by=\',\'",
"--local", "-u", "root", "-pRoot@123", "database_name", named_pipe],
stdin=pv.stdout,
)
pv.stdout.close()
这是一个简单的 mysqlimport 命令,它运行良好并上传数据,但没有 pipe_viewer,无法跟踪进度:
pro = subprocess.Popen(
["mysqlimport", "--ignore-lines=1", "--fields-terminated-by=\',\'",
"--local", "-u", "root", "-pRoot@123", "database_name", "file.csv"],
stdout=subprocess.PIPE
)
这是使用 pipe_viewer 和 mysqlimport 的终端命令,它工作正常:
$ mkfifo named_pipe
$ pv -f file.csv > named_pipe | mysqlimport --ignore-lines=1 --fields-terminated-by=',' --local -u root -pRoot@123 database_name named_pipe