You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python .py文件中执行MySQL Shell代码快速导入CSV到MySQL

解决方法

核心思路

通过Python内置的subprocess模块直接调用本地安装的mysqlsh.exe,利用MySQL Shell的命令行参数执行指定的JS导入脚本即可。

推荐代码示例

import subprocess

# 配置项,请根据实际情况修改
MYSQLSH_PATH = r"C:\Program Files\MySQL\MySQL Shell 8.0\bin\mysqlsh.exe"
# 数据库连接信息,替换为自己的用户名、密码、主机地址
DB_CONN = "your_username:your_password@localhost"
# 要执行的导入JS命令
IMPORT_SCRIPT = '''
util.importTable("/usr/local/mysql/mysql-files/load_data.csv", 
{
    schema: "parallel", 
    table: "parallel_load", 
    columns: ["user_id","visible","name","size","latitude","longitude","timestamp","public","description","inserted"], 
    dialect: "csv-unix", 
    skipRows: 0, 
    showProgress: true, 
    fieldsOptionallyEnclosed: true, 
    fieldsTerminatedBy: ",", 
    linesTerminatedBy: "\\n",
    fieldsEnclosedBy: '"',
    threads: 8, 
    bytesPerChunk: "1G", 
    maxRate: "2G"
})
'''

# 组装命令列表(无需开启shell=True,安全性更高)
command = [
    MYSQLSH_PATH,
    DB_CONN,
    "--js",
    "-e",
    IMPORT_SCRIPT
]

# 执行命令并捕获输出
try:
    result = subprocess.run(
        command,
        check=True,
        capture_output=True,
        text=True,
        encoding='utf-8'
    )
    print("导入执行成功,输出如下:")
    print(result.stdout)
except subprocess.CalledProcessError as e:
    print("导入执行失败,错误信息:")
    print(e.stderr)

注意事项

  • 路径处理:如果CSV文件存放在Windows本地,需要替换为实际的Windows路径,如C:/mysql_files/load_data.csv,避免路径识别错误。
  • 安全优化:如果不想将数据库明文密码写在连接串中,可以删除连接串里的密码字段,改为添加--password参数交互式输入,或者通过MySQL配置登录路径的方式存储认证信息。
  • 转义处理:脚本中的特殊字符如换行符、双引号需要做好转义,避免命令解析失败。

内容的提问来源于stack exchange,提问作者Harold James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 03:48:00