# SQL_Script 用于**独立于业务服务**的数据库初始化与分区管理。 > 目标:主服务 `bls-rcu-action-backend` 只负责消费 Kafka 与写库,不再承担任何建库/建表/建分区职责。 ## 文件说明 - `init_rcu_action.sql` - 初始化 `rcu_action.rcu_action_events` 主表与索引 - `init_room_status.sql` - 初始化 `room_status.room_status_moment` 主表与索引 - `partition_rcu_action.sql` - `rcu_action` 按天 RANGE 分区 SQL 模板 - `partition_room_status.sql` - `room_status` 按 `hotel_id` LIST 分区 SQL 模板 - `db_manager.js` - Node 调用入口(CLI + 可 import) ## 环境变量 与主服务统一: - `DB_HOST` / `POSTGRES_HOST` - `DB_PORT` / `POSTGRES_PORT` - `DB_USER` / `POSTGRES_USER` - `DB_PASSWORD` / `POSTGRES_PASSWORD` - `DB_DATABASE` / `POSTGRES_DATABASE` - `DB_SSL=true|false` - `DB_ADMIN_DATABASE`(可选,默认 `postgres`) ## 命令行调用 在 `bls-rcu-action-backend` 目录执行: - `npm run db:init:all` - 创建数据库(若不存在)+ 初始化两套主表 - `npm run db:init:rcu-action` - `npm run db:init:room-status` - `npm run db:partition:rcu-action` - 默认预建未来 30 天分区 - `npm run db:partition:room-status -- 1001` - 为 hotel_id=1001 建分区 ## 其他程序直接 import ```js import { initAll, ensureDatabase, ensureRcuPartitions, ensureRoomStatusPartition } from '../SQL_Script/db_manager.js'; await initAll(); await ensureRcuPartitions(45); await ensureRoomStatusPartition(1001); ```