Files
Neo-ZQYY/scripts/ops/_archive_old_ddl.py

74 lines
2.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
一次性脚本:将已被 docs/database/ddl/ 覆盖的旧 DDL 文件归档到 db/_archived/。
迁移脚本、种子数据、FDW 配置、工具脚本不动。
用法cd C:\\NeoZQYY && python scripts/ops/_archive_old_ddl.py
"""
import shutil
from pathlib import Path
from datetime import date
ROOT = Path(__file__).resolve().parent.parent.parent
ARCHIVE_DIR = ROOT / "db" / "_archived" / f"ddl_baseline_{date.today().isoformat()}"
# 需要归档的文件:旧基线 DDL已被 docs/database/ddl/ 完全覆盖)
FILES_TO_ARCHIVE = [
# etl_feiqiu/schemas/ 下的当前基线
"db/etl_feiqiu/schemas/meta.sql",
"db/etl_feiqiu/schemas/ods.sql",
"db/etl_feiqiu/schemas/dwd.sql",
"db/etl_feiqiu/schemas/core.sql",
"db/etl_feiqiu/schemas/dws.sql",
"db/etl_feiqiu/schemas/app.sql",
# etl_feiqiu/schemas/ 下的历史遗留版本(使用旧 schema 名 billiards_*/etl_admin
"db/etl_feiqiu/schemas/schema_dwd_doc.sql",
"db/etl_feiqiu/schemas/schema_dws.sql",
"db/etl_feiqiu/schemas/schema_etl_admin.sql",
"db/etl_feiqiu/schemas/schema_ODS_doc.sql",
"db/etl_feiqiu/schemas/schema_verify_perf_indexes.sql",
# zqyy_app/schemas/ 下的基线
"db/zqyy_app/schemas/init.sql",
]
def main():
ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
moved = []
skipped = []
for rel in FILES_TO_ARCHIVE:
src = ROOT / rel
if not src.exists():
skipped.append(rel)
continue
# 保留原始目录结构
dest = ARCHIVE_DIR / rel
dest.parent.mkdir(parents=True, exist_ok=True)
shutil.move(str(src), str(dest))
moved.append(rel)
print(f"归档目录:{ARCHIVE_DIR}")
print(f"已移动 {len(moved)} 个文件:")
for f in moved:
print(f"{f}")
if skipped:
print(f"跳过 {len(skipped)} 个(不存在):")
for f in skipped:
print(f" ⏭️ {f}")
# 保留 .gitkeep
for d in ["db/etl_feiqiu/schemas", "db/zqyy_app/schemas"]:
gk = ROOT / d / ".gitkeep"
if not gk.exists():
gk.touch()
print(f" 📄 补充 {d}/.gitkeep")
print(f"\n✅ 完成。旧 DDL 已归档schemas/ 目录保留 .gitkeep")
if __name__ == "__main__":
main()