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连接URLSystem.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
相关产品推荐
相关产品推荐

