74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
"""
|
||
一次性脚本:将已被 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()
|