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

如何编写用于Unix服务器IICS任务的BigQuery表截断Shell脚本?

Shell脚本实现BigQuery指定表截断(适用于IICS命令任务)

前提条件

  • Unix服务器已安装Google Cloud SDK(包含bq命令行工具)
  • 已配置BigQuery访问权限:通过服务账号密钥文件完成认证,确保账号拥有目标表的DELETE或TRUNCATE权限
  • 服务账号密钥文件已上传至服务器指定路径

完整Shell脚本

#!/bin/bash

# 校验传入参数数量
if [ $# -ne 3 ]; then
    echo "用法: $0 <GCP_PROJECT_ID> <DATASET_ID> <TABLE_NAME>"
    exit 1
fi

# 接收IICS传递的参数
PROJECT_ID=$1
DATASET_ID=$2
TABLE_NAME=$3

# 设置服务账号密钥路径(根据实际路径修改)
export GOOGLE_APPLICATION_CREDENTIALS="/opt/gcp_keys/service-account-key.json"

# 执行BigQuery表截断操作
bq query --project_id="$PROJECT_ID" --use_legacy_sql=false "TRUNCATE TABLE \`$PROJECT_ID.$DATASET_ID.$TABLE_NAME\`"

# 校验命令执行结果,返回对应状态码给IICS
if [ $? -eq 0 ]; then
    echo "成功截断表: $PROJECT_ID.$DATASET_ID.$TABLE_NAME"
    exit 0
else
    echo "截断表失败: $PROJECT_ID.$DATASET_ID.$TABLE_NAME"
    exit 1
fi

关键说明

  • 参数设计:脚本接收3个必填参数,适配IICS命令任务的动态传参需求,无需硬编码表信息
  • 认证方式:通过GOOGLE_APPLICATION_CREDENTIALS环境变量指定服务账号密钥,确保脚本具备BigQuery访问权限
  • SQL语法:使用标准SQL模式(--use_legacy_sql=false),用反引号包裹完整表标识符,避免特殊字符解析错误
  • 状态返回:通过$?捕获命令执行状态,返回0表示成功,非0表示失败,IICS可直接根据退出码判断任务结果

IICS命令任务配置步骤

  1. 将脚本上传至Unix服务器可执行目录,比如/opt/iics_scripts/truncate_bq_table.sh
  2. 给脚本添加执行权限:chmod +x /opt/iics_scripts/truncate_bq_table.sh
  3. 在IICS命令任务中配置执行命令:
    /opt/iics_scripts/truncate_bq_table.sh your-gcp-project your-dataset your-target-table
    
  4. 可选优化:若密钥路径需要动态调整,可将其作为第4个参数传入脚本,避免硬编码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:10:23