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

Shell脚本如何提取竖线分隔的数据库名并批量执行导出操作

实现代码

直接复制以下脚本修改对应配置即可使用:

#!/bin/bash

# 自定义配置项,按实际情况修改
login_account="abc"
login_pwd="你的实际密码"
log_path="./export_database.log"
export_sh_path="./export.sh"
vql_file_path="export_delta.vql"
server_addr="localhost:9999"

# 清空历史日志(可选)
> "$log_path"

# 替换下方「你的Java查询数据库列表命令」为实际执行的java CLI命令
你的Java查询数据库列表命令 | awk -F '|' 'NR>1 && $2!="" {gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2); print $2}' | while read -r db_name
do
    echo "=== 开始导出数据库:$db_name ===" >> "$log_path"
    "$export_sh_path" --login "$login_account" --password "$login_pwd" --file "$vql_file_path" --server "$server_addr/$db_name" 2>&1 >> "$log_path"
    
    # 导出结果校验(可选,不需要可以删掉)
    if [ $? -eq 0 ]; then
        echo "✅ 数据库 $db_name 导出完成" >> "$log_path"
    else
        echo "❌ 数据库 $db_name 导出失败,请检查错误日志" >> "$log_path"
    fi
done
关键逻辑说明
  • 用awk处理竖线分隔的输出:指定|为分隔符,NR>1跳过第一行表头,过滤空行后提取第二列的数据库名,同时自动去掉字段前后的多余空格
  • 采用while read循环而非for循环,避免数据库名存在特殊字符时循环出错
  • 所有变量用双引号包裹,避免路径、名称带空格时执行报错
可选调整方案

如果你需要先把Java命令输出的数据库列表存到本地文件再处理,只需要把管道前的Java命令替换为cat 你的列表文件路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:04