This commit is contained in:
vipg
2025-12-26 16:33:11 +08:00
parent 5cee27cb72
commit 586ee37bf3
3 changed files with 9 additions and 6 deletions

View File

@@ -202,6 +202,4 @@ DO $$
BEGIN BEGIN
RAISE NOTICE '✅============ 数据库表部署完成 ============✅'; RAISE NOTICE '✅============ 数据库表部署完成 ============✅';
END $$; END $$;
```
```

View File

@@ -3,7 +3,11 @@
set -e # 遇到错误立即退出 set -e # 遇到错误立即退出
# 定义表名变量,可以根据需要修改
TABLE_NAME="cn_pmi_234_aaarecords"
echo "🚀 启动Python容器执行create_table.py..." echo "🚀 启动Python容器执行create_table.py..."
echo "📋 目标表名: ${TABLE_NAME}"
# 获取脚本所在目录的绝对路径 # 获取脚本所在目录的绝对路径
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -24,6 +28,7 @@ docker run --rm \
--name "${CONTAINER_NAME}" \ --name "${CONTAINER_NAME}" \
-v "${SCRIPT_DIR}:/app/create" \ -v "${SCRIPT_DIR}:/app/create" \
-v "${PROJECT_ROOT}/infra/postgres/sql:/app/infra/postgres/sql" \ -v "${PROJECT_ROOT}/infra/postgres/sql:/app/infra/postgres/sql" \
-e TABLE_NAME="${TABLE_NAME}" \
-w /app \ -w /app \
python:3.13.7-alpine3.22 \ python:3.13.7-alpine3.22 \
sh -c " sh -c "

View File

@@ -7,8 +7,8 @@ create.py - 动态生成PostgreSQL建表SQL语句
import os import os
import re import re
# 1. 定义表名称变量,方便调整 # 从环境变量获取表名,如果没有设置则使用默认值
table_name = "cn_pmi_234_aaarecords" # 可以根据需要修改表名 table_name = os.environ.get('TABLE_NAME', 'cn_pmi_234_aaarecords')
# 2. 定义SQL模板 # 2. 定义SQL模板
sql_template = f"""DO $$ sql_template = f"""DO $$
@@ -69,7 +69,7 @@ def update_sql_file():
with open(sql_file_path, 'r', encoding='utf-8') as f: with open(sql_file_path, 'r', encoding='utf-8') as f:
content = f.read() content = f.read()
# 查找插入位置(在\"部署完成\"日志前) # 查找插入位置(在"部署完成"日志前)
insert_pattern = r'(DO \$\$.*?RAISE NOTICE \'🚀============ 数据库表部署开始 ============🚀\'.*?END \$\$;)(.*?)(DO \$\$.*?RAISE NOTICE \'============ 数据库表部署完成 ============\'.*?END \$\$;)' insert_pattern = r'(DO \$\$.*?RAISE NOTICE \'🚀============ 数据库表部署开始 ============🚀\'.*?END \$\$;)(.*?)(DO \$\$.*?RAISE NOTICE \'============ 数据库表部署完成 ============\'.*?END \$\$;)'
match = re.search(insert_pattern, content, re.DOTALL) match = re.search(insert_pattern, content, re.DOTALL)