Files
sanguo_vnpy_v2/scripts/nas_sync/sync_tables.sh
T
claude_dev b2aab85105
CI/CD / test (push) Successful in 10s
CI/CD / nas-smoke (push) Successful in 2s
CI/CD / vps (push) Successful in 18s
feat(nas_sync): 小表全量同步管线(constituent_unified+bs_adjust_factor)
新增 export_table.py/merge_table.py/sync_tables.sh: VPS stdin喂python全量dump → scp → NAS全量替换(DROP+CREATE+INSERT,幂等可重跑)。sync_dbbardata.sh 每日increment末尾连带跑 sync_tables,保持NAS副本成份股/复权因子不陈旧。修复NAS组合回测选股恒空(NAS副本缺constituent_unified表,phase3只导dbbardata)。
2026-07-31 08:18:36 +08:00

42 lines
1.6 KiB
Bash
Raw 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.
#!/bin/bash
# NAS 端:小表全量同步(constituent_unified / bs_adjust_factor 等)。
#
# 这些表无 id 增量键、行数万级、变化不频繁(成份股月度调整 / 除权日),
# 全量 dump + replace 最简,每天跑也只需几秒。
#
# 用法: bash sync_tables.sh
# 设计同 sync_dbbardata.sh: VPS python(stdin 喂) 导出 sqlite → scp → NAS 全量替换。
# 幂等: merge 端 DROP+CREATE+INSERT,重跑安全。
set -eu
KEY=/var/services/homes/admin/.ssh/id_ed25519_nas
VPS=Administrator@49.232.102.198
VPS_DB='C:\sanguo_vnpy_v2\data\quant_trading.db'
VPS_OUT='C:\sanguo_vnpy_v2\data\_sync_tbl.db'
VPS_OUT_SCP='C:/sanguo_vnpy_v2/data/_sync_tbl.db'
VPS_PY='C:\Python310\python.exe -X utf8 -'
ROOT=/volume1/stock/sanguo_vnpy_v2
EXP=$ROOT/scripts/nas_sync/export_table.py
MERGE=$ROOT/scripts/nas_sync/merge_table.py
DB=$ROOT/data_backup/quant_trading.db
STAGE=$ROOT/data_backup/_staging
LOG=$ROOT/data_backup/sync_tables.log
# 要全量同步的小表清单(merge_table.py 需登记 schema
TABLES=(constituent_unified bs_adjust_factor)
mkdir -p "$STAGE"
echo "=== $(date '+%F %T') tables sync start ===" >> "$LOG"
for T in "${TABLES[@]}"; do
echo "[$(date '+%T')] export $T ..." >> "$LOG"
ssh -i "$KEY" -o StrictHostKeyChecking=no "$VPS" \
"$VPS_PY --db $VPS_DB --out $VPS_OUT --table $T" < "$EXP" >> "$LOG" 2>&1
scp -i "$KEY" -o StrictHostKeyChecking=no "$VPS:$VPS_OUT_SCP" "$STAGE/tbl.db" >> "$LOG" 2>&1
python3 "$MERGE" --db "$DB" --inc "$STAGE/tbl.db" --table "$T" >> "$LOG" 2>&1
rm -f "$STAGE/tbl.db"
echo "[$(date '+%T')] $T done" >> "$LOG"
done
echo "=== $(date '+%F %T') TABLES SYNC DONE ===" >> "$LOG"