Ubuntu 下 Informix 自定义脚本实用指南

一 环境准备与约定
二 常用脚本模板
#!/usr/bin/env bash# 用法:./infctl.sh {start|stop|status}set -Eeuo pipefailsource ~/.bash_profilecase "$1" instart)echo "[$(date)] Starting Informix ..."oninit -v;;stop)echo "[$(date)] Stopping Informix ..."onmode -ky;;status)echo "[$(date)] Informix status:"onstat -i;;*)echo "Usage: $0 {start|stop|status}"exit 1;;esac说明:oninit 用于初始化/启动实例,onmode -ky 安全关闭实例,onstat -i 查看简要状态。
#!/usr/bin/env bash# 用法:./runsql.sh "select tabname from systables limit 5"set -Eeuo pipefailsource ~/.bash_profileDB="${1:-testdb}"SQL="$2"# 无标题输出到 stdout,便于脚本解析dbaccess "$DB" <<EOF 2>/dev/nulloutput to pipe cat without headings$SQLEOF说明:通过 dbaccess 在指定库执行 SQL,使用“output to pipe cat without headings”抑制标题与多余日志,便于在 Shell 中捕获与解析结果。
#!/usr/bin/env bash# 用法:./unload.sh "select c1,c2 from t1" t1.csv /tmp/t1.tmpset -Eeuo pipefailsource ~/.bash_profileDB="${1:-testdb}"SQL="$2"OUT="$3"TMP="$4"cat >"$TMP" <<EOFunload to '$OUT' delimiter ','$SQLEOFdbaccess "$DB" < "$TMP"rm -f "$TMP"echo "Exported to $OUT"说明:使用 unload to … delimiter ‘,’ 将查询结果导出为 CSV,适合数据交换与备份。
#!/usr/bin/env bash# 用法:./load.sh mydb /path/load.ctl /path/load.log 1000 100set -Eeuo pipefailsource ~/.bash_profileDB="$1"CTL="$2"LOG="$3"COMMIT_EVERY="${4:-1000}"SKIP_LINES="${5:-0}"dbload -d "$DB" -c "$CTL" -l "$LOG" -n "$COMMIT_EVERY" -i "$SKIP_LINES"echo "Load finished, see $LOG"说明:dbload 从控制文件批量导入,-n 指定每多少行提交,-i 跳过前几行(如含表头),适合大批量数据装载。
三 自动化与运维脚本
自动创建实例脚本要点(示例片段)
定时启停与监控
四 排错与最佳实践