需求背景
某企业遗留系统存在关键业务表单,其核心功能包括根据数据库中数据生成二维点阵图逻辑。在系统重构过程中需要进行数据溯源,面临以下技术挑战:
-
原始系统文档缺失,无法确认点阵图生成逻辑与数据库的映射关系
-
需从数百个数据表中定位核心参数表及关联字段
本文隐去具体的数据和图,重在介绍使用DeepSeek解决实际问题的思路。
一. 首先要确定表单对应的数据库中的表
解决思路:导出数据库的表结构和注释信息,同时截图该表单,将这2个文档提供给DeepSeek,让DeepSeek分析出该表单和哪个表对应。
关于导出数据库的结构信息,可参考以下博文提到的方法:
由于该软件对应的数据库的表有200左右,业务部门主要使用这一个表单功能,其他功能很少使用,通过连接数据库观察,很多表内容是空的,于是只需要导出有数据的表进行分析。
使用以下提示词让DeepSeek生成导出数据库的Python脚本:
提示词:
使用python编写一段脚本,连接mysql数据库,导出指定的数据库表结构以及注释,保存到文件中,忽略空表。
import mysql.connector
def main():
# 获取数据库连接信息
host = input("请输入MySQL主机地址(默认localhost): ") or 'localhost'
port = int(input("请输入端口(默认3306): ") or 3306)
user = input("请输入用户名: ")
password = input("请输入密码: ")
database = input("请输入数据库名: ")
output_file = input("请输入输出文件名: ")
try:
# 建立数据库连接
conn = mysql.connector.connect(
host=host,
port=port,
user=user,
password=password,
database=database
)
cursor = conn.cursor()
# 获取所有表名
cursor.execute("SHOW TABLES")
tables = [table[0] for table in cursor.fetchall()]
with open(output_file, 'w', encoding='utf-8') as f:
for table in tables:
# 跳过空表
cursor.execute(f"SELECT COUNT(*) FROM `{table}`")
if cursor.fetchone()[0] == 0:
print(f"跳过空表: {table}")
continue
# 获取表结构
cursor.execute(f"SHOW CREATE TABLE `{table}`")
create_table_sql = cursor.fetchone()[1]
# 写入文件
f.write(f"-- 表结构: {table}\n")
f.write(f"{create_table_sql};\n\n")
print(f"表结构已成功导出至: {output_file}")
except mysql.connector.Error as err:
print(f"数据库错误: {err}")
except Exception as e:
print(f"发生错误: {e}")
finally:
if 'conn' in locals() and conn.is_connected():
cursor.close()
conn.close()
if __name__ == "__main__":
main()
二. 确定二维像素图和数据表中的对应字段
在确定表之后,从字段名和注释信息,无法判断出具体哪个或哪些字段和二维点阵图相关。于是通过该软件截取了5条表单中的二维点阵图,并根据ID信息找到对应数据库中的数据,将该条数据导出为insert语句,将这些信息保存到一个word文档中。将这个文档上传给DeepSeek,使用如下提示词,让DeepSeek寻找二维点阵图相关的字段。
提示词:
根据文档中给出的二维点阵图和对应的数据,分析出和二维点阵图相关的字段。
实际情况,DeepSeek给出了几个可能的字段,经过认为观察和分析,确定出一个字符串字段和该二维点阵图直接相关。
三.破译数据含义
确定如何根据字符串数据绘制出该二维像素图。 将上一步中的5条二维点阵图和对应的字符串数据保存在一个word文档中,将文档上传给DeepSeek。
提示词:
根据文档中给出的二维点阵图和对应的字符串信息,分析出字符串数据的含义。
四.验证
从软件中截取一条新的二维点阵图,上传给DeepSeek,让DeepSeek给出对应的字符串,再从数据库中取出对应数据的字符串进行对比。经过核对,完全一致,说明第三步得出的结果正确。