88 lines
4.3 KiB
Python
88 lines
4.3 KiB
Python
def parse_pg_table(file_path, output_file):
|
||
current_table = None
|
||
with open(file_path, 'r', encoding='utf-8') as f:
|
||
lines = f.readlines()
|
||
for line in lines:
|
||
line = line.strip()
|
||
if not line or 'table_name' in line or 'column_name' in line:
|
||
continue
|
||
parts = [p.strip() for p in line.split('|')]
|
||
if len(parts) < 4:
|
||
continue
|
||
table_name, column_name, data_type, is_nullable = parts[:4]
|
||
if table_name != current_table:
|
||
if current_table is not None:
|
||
output_file.write('\n')
|
||
output_file.write(f'### {table_name}\n')
|
||
output_file.write('【表用途注释:】\n')
|
||
output_file.write('| 字段名 | 数据类型 | 注释 |\n')
|
||
output_file.write('|--------|----------|------|\n')
|
||
current_table = table_name
|
||
output_file.write(f'| {column_name} | {data_type} | |\n')
|
||
def parse_mysql_table(file_path, output_file):
|
||
current_table = None
|
||
with open(file_path, 'r', encoding='utf-8') as f:
|
||
lines = f.readlines()
|
||
for line in lines:
|
||
line = line.strip()
|
||
if not line or 'TABLE_NAME' in line or 'COLUMN_NAME' in line:
|
||
continue
|
||
parts = [p.strip() for p in line.split('\t')]
|
||
if len(parts) < 4:
|
||
continue
|
||
table_name, column_name, data_type, is_nullable = parts[:4]
|
||
if table_name != current_table:
|
||
if current_table is not None:
|
||
output_file.write('\n')
|
||
output_file.write(f'### {table_name}\n')
|
||
output_file.write('【表用途注释:】\n')
|
||
output_file.write('| 字段名 | 数据类型 | 注释 |\n')
|
||
output_file.write('|--------|----------|------|\n')
|
||
current_table = table_name
|
||
output_file.write(f'| {column_name} | {data_type} | |\n')
|
||
with open('/root/.openclaw/workspace/数据库表结构总览_完整版.md', 'w', encoding='utf-8') as f:
|
||
f.write('# 瓦拉英语业务数据库表结构总览(完整版)\n')
|
||
f.write('## 使用说明\n')
|
||
f.write('- 每个表开头的【表用途注释】行可填写该表的业务用途说明\n')
|
||
f.write('- 每个字段的【注释】列可填写该字段的业务含义说明\n')
|
||
f.write('- 所有空注释位置均可直接编辑补充\n')
|
||
f.write('---\n')
|
||
f.write('## 一、线上PostgreSQL库(正式环境用户行为数据)\n')
|
||
f.write('- **地址:** bj-postgres-16pob4sg.sql.tencentcdb.com:28591\n')
|
||
f.write('- **库名:** vala_bi\n')
|
||
f.write('- **权限:** 只读\n')
|
||
f.write('---\n')
|
||
parse_pg_table('/root/.openclaw/workspace/pg_online_full.txt', f)
|
||
f.write('\n---\n')
|
||
f.write('## 二、测试PostgreSQL库(测试环境行为数据)\n')
|
||
f.write('- **地址:** bj-postgres-642mcico.sql.tencentcdb.com:21531\n')
|
||
f.write('- **库名:** vala_bi\n')
|
||
f.write('- **权限:** 只读\n')
|
||
f.write('---\n')
|
||
parse_pg_table('/root/.openclaw/workspace/pg_test_full.txt', f)
|
||
f.write('\n---\n')
|
||
f.write('## 三、线上MySQL库(线上版本配置/订单/用户数据)\n')
|
||
f.write('- **地址:** bj-cdb-dh2fkqa0.sql.tencentcdb.com:27751\n')
|
||
f.write('- **权限:** 只读\n')
|
||
f.write('---\n')
|
||
parse_mysql_table('/root/.openclaw/workspace/mysql_online_full.txt', f)
|
||
f.write('\n---\n')
|
||
f.write('## 四、测试MySQL库(测试环境配置/用户数据)\n')
|
||
f.write('- **地址:** bj-cdb-8frbdwju.sql.tencentcdb.com:25413\n')
|
||
f.write('- **权限:** 只读\n')
|
||
f.write('---\n')
|
||
parse_mysql_table('/root/.openclaw/workspace/mysql_test_full.txt', f)
|
||
f.write('\n---\n')
|
||
f.write('## 五、线上Elasticsearch(正式环境服务日志)\n')
|
||
f.write('- **地址:** es-7vd7jcu9.public.tencentelasticsearch.com:9200\n')
|
||
f.write('- **协议:** https\n')
|
||
f.write('- **权限:** 只读\n')
|
||
f.write('【说明:】ES为日志存储,索引结构可根据查询需求单独补充说明\n')
|
||
f.write('---\n')
|
||
f.write('## 六、测试Elasticsearch(测试环境服务日志)\n')
|
||
f.write('- **地址:** es-o79jsx9i.public.tencentelasticsearch.com:9200\n')
|
||
f.write('- **协议:** https\n')
|
||
f.write('- **权限:** 只读\n')
|
||
f.write('【说明:】ES为日志存储,索引结构可根据查询需求单独补充说明\n')
|
||
print('生成完成!')
|