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

Groovy连接MySQL并批量导入CSV数据代码中文解析

Groovy操作MySQL批量导入CSV代码解析

我来帮你拆解这段Groovy操作MySQL的代码,它的核心作用是高效批量将本地CSV文件的数据导入到MySQL数据库中,下面逐部分详细解析:

1. 导入数据库操作核心类

首先导入Groovy专门简化JDBC数据库操作的核心工具类,有了它能大幅简化数据库连接、执行SQL等操作:

import groovy.sql.Sql

2. 从环境变量初始化MySQL连接

这里通过读取环境变量来获取数据库连接参数,这是非常推荐的做法——避免将敏感的账号密码硬编码到代码中,既安全又能灵活适配不同运行环境(开发/测试/生产):

  • System.getenv("FRS_MYSQL_URL"):读取环境变量中的MySQL连接URL
  • System.getenv("FRS_MYSQL_USERNAME"):读取数据库用户名
  • System.getenv("FRS_MYSQL_PW"):读取数据库密码
  • System.getenv("MYSQL_DRIVER_NAME"):读取MySQL驱动类名(比如com.mysql.cj.jdbc.Driver)

通过Sql.newInstance()快速创建数据库连接实例并赋值给mysqlSql变量:

mysqlSql = Sql.newInstance( System.getenv("FRS_MYSQL_URL"), System.getenv("FRS_MYSQL_USERNAME"), System.getenv("FRS_MYSQL_PW"), System.getenv("MYSQL_DRIVER_NAME") )

3. 关闭自动提交,开启事务控制

设置autoCommit = false是关键操作:它关闭了MySQL的自动提交机制,意味着后续的所有SQL操作会被纳入同一个事务中——要么全部执行成功后手动提交,要么遇到错误时全部回滚,能有效避免部分数据导入失败导致的数据库数据不一致问题:

mysqlSql.connection.autoCommit = false;

4. 批量CSV导入SQL语句定义

这里定义了crg_work_sync变量,里面是多条LOAD DATA LOCAL INFILE语句,这是MySQL提供的远快于逐条插入的批量数据导入命令:

  • LOAD DATA LOCAL INFILE '文件路径':指定要导入的本地CSV文件的绝对路径
  • INTO TABLE crg_work.cash_flow_scores:明确数据要导入到crg_work库下的cash_flow_scores表
  • FIELDS TERMINATED BY ',':指定CSV文件中的字段用逗号分隔
  • LINES TERMINATED BY '\n':指定CSV文件中的每行数据用换行符分隔

代码里省略了后续的导入语句,推测是重复类似逻辑,导入其他CSV文件到对应的数据库表中:

crg_work_sync = """
LOAD DATA LOCAL INFILE '/local/apps/msadeploy/output/clarifi/ingestion/output/cash_flow_scores.csv' INTO TABLE crg_work.cash_flow_scores FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\n';
LOAD DATA LOCAL INFILE '/local/apps/msadeploy/output/clarifi/ing...
"""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:35:42