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

如何通过1次MySQL查询将多列结果分别存入不同的bash数组中

实现方案

你可以通过逐行拆分单次查询的制表符分隔结果,分别追加到对应数组实现需求,避免多次连接数据库的开销:

# 提前初始化三个空数组
data1=()
data2=()
data3=()

# 单次查询+逐行处理写入数组
while IFS=$'\t' read -r col1 col2 col3 _; do
  data1+=("$col1")
  data2+=("$col2")
  data3+=("$col3")
done < <(mysql -u root -p'password' -D'users_info' --batch -se 'SELECT data1, data2, data3 FROM users_logs')

关键说明

  • IFS=$'\t' 显式指定行内容按制表符拆分,避免字段内包含空格时拆分错误
  • 末尾的_用于承接行内多余的输出内容,避免异常内容污染第三个字段的取值
  • 使用进程替换< <(命令)喂给while循环,避免管道模式下循环在子shell运行、循环结束后数组值丢失的问题
  • 加--batch参数强制MySQL输出使用制表符分隔列、换行分隔行,兼容性更强

验证示例

你可以执行以下命令确认数组写入正确:

# 打印所有数组内容
echo "data1: ${data1[*]}"
echo "data2: ${data2[*]}"
echo "data3: ${data3[*]}"

# 取第N行的对应字段(索引从0开始)
echo "第1行的三个字段值:${data1[0]} | ${data2[0]} | ${data3[0]}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:03