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

使用Bash脚本获取MySQL LOAD DATA命令的加载记录信息

通过Bash脚本获取MySQL LOAD DATA加载记录数的实现方法

下面介绍两种实用的实现方式,你可以根据场景选择:

方法一:直接解析MySQL命令输出

通过捕获LOAD DATA命令的执行输出,用文本处理工具提取记录数:

#!/bin/bash

# 配置MySQL参数和LOAD DATA命令
MYSQL_USER="你的用户名"
MYSQL_DB="目标数据库名"
LOAD_DATA_CMD="LOAD DATA INFILE '/实际路径/test.txt' INTO TABLE DEMO;"

# 执行命令并捕获输出(若需要密码,添加-p"你的密码"参数)
exec_output=$(mysql -u"$MYSQL_USER" "$MYSQL_DB" -e "$LOAD_DATA_CMD" 2>&1)

# 提取Records字段后的数字
loaded_records=$(echo "$exec_output" | grep -oP 'Records: \K\d+')

echo "本次加载的记录数: $loaded_records"

说明:

  • -e 参数让MySQL直接执行指定的SQL命令
  • 2>&1 合并标准输出和错误输出,确保能捕获到所有返回信息
  • grep -oP 使用Perl正则,\K 会忽略前面匹配的Records: ,只提取后面的数字

方法二:利用MySQL会话状态变量(更可靠)

通过查询MySQL的Rows_imported会话状态变量,对比LOAD DATA执行前后的值,得到准确的加载记录数:

#!/bin/bash

# 配置MySQL参数和LOAD DATA命令
MYSQL_USER="你的用户名"
MYSQL_DB="目标数据库名"
LOAD_DATA_CMD="LOAD DATA INFILE '/实际路径/test.txt' INTO TABLE DEMO;"

# 获取执行前的Rows_imported值
initial_count=$(mysql -u"$MYSQL_USER" "$MYSQL_DB" -e "SHOW SESSION STATUS LIKE 'Rows_imported';" | awk 'NR==2 {print $2}')

# 执行LOAD DATA命令
mysql -u"$MYSQL_USER" "$MYSQL_DB" -e "$LOAD_DATA_CMD"

# 获取执行后的Rows_imported值
final_count=$(mysql -u"$MYSQL_USER" "$MYSQL_DB" -e "SHOW SESSION STATUS LIKE 'Rows_imported';" | awk 'NR==2 {print $2}')

# 计算加载的记录数
loaded_records=$((final_count - initial_count))

echo "本次加载的记录数: $loaded_records"

说明:

  • Rows_imported 是MySQL会话级别的状态变量,会记录当前会话中通过LOAD DATA导入的总行数
  • 这种方法不受输出格式变化影响,比解析文本更稳定

安全提示

不要在脚本中明文写密码,建议通过~/.my.cnf配置文件存储认证信息:

[client]
user=你的用户名
password=你的密码
database=目标数据库名

配置后,脚本中的mysql命令无需再添加-u、-p和数据库名参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:52:39