# SQL_Script 数据库初始化与分区维护脚本。与主服务完全独立,可被任何工具(psql / Node.js / cron / CI)调用。 ## 文件说明 | 文件 | 说明 | |------|------| | `01_init_schema.sql` | 建库:Extension + Schema + 主表 + 索引 + 分区辅助函数(幂等,可重复执行) | | `02_create_partitions.sql` | 预创建分区(昨天 ~ 未来 30 天),直接用 psql 执行 | | `run_init.js` | Node.js 脚本:执行 `01_init_schema.sql` | | `run_ensure_partitions.js` | Node.js 脚本:调用 `ensure_partitions()` 预创建指定日期范围分区 | --- ## 执行顺序(首次部署) ```bash # 第一步:初始化 Schema(建表 + 函数) node SQL_Script/run_init.js # 第二步:预创建分区(默认昨天 ~ 未来 30 天) node SQL_Script/run_ensure_partitions.js ``` 之后每天由外部 cron / 调度任务调用 `run_ensure_partitions.js` 即可。 --- ## run_init.js 用法 ```bash # 最简方式(从 .env 读取连接参数) node SQL_Script/run_init.js # 指定连接参数 node SQL_Script/run_init.js \ --host=10.8.8.109 \ --port=5433 \ --user=log_admin \ --password=yourpassword \ --database=log_platform ``` --- ## run_ensure_partitions.js 用法 ```bash # 默认:昨天 到 未来 30 天 node SQL_Script/run_ensure_partitions.js # 按 offset(相对今天的天数偏移) node SQL_Script/run_ensure_partitions.js --start-offset=-1 --end-offset=60 # 按具体日期 node SQL_Script/run_ensure_partitions.js --start-date=2026-03-01 --end-date=2026-06-30 ``` --- ## psql 直接执行 ```bash # Schema 初始化 psql -h 10.8.8.109 -p 5433 -U log_admin -d log_platform -f SQL_Script/01_init_schema.sql # 预创建分区(默认昨天 ~ 未来 30 天) psql -h 10.8.8.109 -p 5433 -U log_admin -d log_platform -f SQL_Script/02_create_partitions.sql ``` --- ## 连接参数优先级 ``` 命令行参数 > 环境变量 > 根目录 .env 文件 > 默认值 ``` 支持的环境变量: | 环境变量 | 说明 | |----------|------| | `POSTGRES_HOST` | 主机,默认 `127.0.0.1` | | `POSTGRES_PORT` | 端口,默认 `5432` | | `POSTGRES_USER` | 用户名,默认 `postgres` | | `POSTGRES_PASSWORD` | 密码 | | `POSTGRES_DATABASE` | 数据库名,默认 `log_platform` | --- ## 定时分区维护(cron 示例) ```cron # 每天凌晨 01:00 自动创建未来 30 天分区 0 1 * * * cd /path/to/Web_BLS_Heartbeat_Server && node SQL_Script/run_ensure_partitions.js >> /var/log/partition_cron.log 2>&1 ```