ubuntu

Ubuntu Informix如何自定义脚本

小樊
38
2025-12-21 01:50:47
栏目: 智能运维

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

一 环境准备与约定

二 常用脚本模板

#!/usr/bin/env bash
# 用法:./infctl.sh {start|stop|status}
set -Eeuo pipefail
source ~/.bash_profile

case "$1" in
  start)
    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 pipefail
source ~/.bash_profile

DB="${1:-testdb}"
SQL="$2"

# 无标题输出到 stdout,便于脚本解析
dbaccess "$DB" <<EOF 2>/dev/null
output to pipe cat without headings
$SQL
EOF

说明:通过 dbaccess 在指定库执行 SQL,使用“output to pipe cat without headings”抑制标题与多余日志,便于在 Shell 中捕获与解析结果。

#!/usr/bin/env bash
# 用法:./unload.sh "select c1,c2 from t1" t1.csv /tmp/t1.tmp
set -Eeuo pipefail
source ~/.bash_profile

DB="${1:-testdb}"
SQL="$2"
OUT="$3"
TMP="$4"

cat >"$TMP" <<EOF
unload to '$OUT' delimiter ','
$SQL
EOF

dbaccess "$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 100
set -Eeuo pipefail
source ~/.bash_profile

DB="$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 跳过前几行(如含表头),适合大批量数据装载。

三 自动化与运维脚本

四 排错与最佳实践

0
看了该问题的人还看了