如何编写用于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命令任务配置步骤
- 将脚本上传至Unix服务器可执行目录,比如
/opt/iics_scripts/truncate_bq_table.sh - 给脚本添加执行权限:
chmod +x /opt/iics_scripts/truncate_bq_table.sh - 在IICS命令任务中配置执行命令:
/opt/iics_scripts/truncate_bq_table.sh your-gcp-project your-dataset your-target-table - 可选优化:若密钥路径需要动态调整,可将其作为第4个参数传入脚本,避免硬编码
内容的提问来源于stack exchange,提问作者Pradnya
相关产品推荐
相关产品推荐

