使用大模型进行SQL迁移的实践总结

avatar
作者
筋斗云
阅读量:1

在现代化的项目管理和运维工作中,利用大模型(如ChatGPT)处理复杂任务已成为一种高效手段。近期我们在一个项目中尝试利用大模型将MySQL导出的SQL语句迁移为达梦信创数据库格式,通过几轮操作,我们深刻体会到提示词工程的重要性,并总结了使用大模型的最佳实践。

项目背景

在项目中,我们需要将一份从MySQL导出的SQL文件迁移为达梦信创数据库格式,具体要求是将SQL语句中的表名和字段名全部加上双引号。人工处理不仅耗时且容易出错,因此我们决定尝试利用大模型来完成这项任务。

操作过程

第一轮操作:

我们将脱敏后的SQL文件上传至ChatGPT,并下指令为“帮我把文件中的SQL语句表名和列表加上双引号”。操作如下图所示:

图片

初步结果显示大部分语句正确处理,但仍有部分未按要求执行。如下图所示:

图片

此时,我们意识到提示词和示例的重要性。

第二轮操作:

针对第一轮结果,我们明确指出存在问题,并提供了一个手工处理后的正确示例。

图片

尽管结果有所改善,但部分过长的SQL语句仍未完全正确处理。如下图所示:

图片

此时,我们进一步调整了提示词,并增强了示例的覆盖面。

第三轮操作:

在前两轮的基础上,我们增加了示例数量,并设计了更详细的提示词。具体提示词包括明确的需求、正确的SQL语句示例以及操作后的预期结果。

图片

完整的”提示词工程“如下:

帮我把文件中的sql语句表名和列名加上双引号。如下为表名和列名加上双引号的正确示例,请将如上文件进行修改后,并提供下载:INSERT INTO "QRTZ_CRON_TRIGGERS" ("SCHED_NAME","TRIGGER_NAME","TRIGGER_GROUP","CRON_EXPRESSION","TIME_ZONE_ID") VALUES ('UCenterScheduler','TASK_CLASS_NAME102','DEFAULT','0 0 0 ? * 1','Asia/Hong_Kong'); INSERT INTO "SYS_DICT_DATA" ("DICT_SORT","DICT_LABEL","DICT_VALUE","DICT_TYPE","CSS_CLASS","LIST_CLASS","IS_DEFAULT","STATUS","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","REMARK") VALUES (2,'服务中心','2','sys_link_type','','default','N','0','EoiAdmin','2023-06-09 14:22:42','EoiAdmin','2023-06-14 16:50:46',''), (1,'运管系统','1','sys_link_type',NULL,'default','N','0','EoiAdmin','2023-06-09 14:23:10','',NULL,NULL), (3,'轮播类型','3','sys_link_type',NULL,'default','N','0','EoiAdmin','2023-06-09 14:23:38','',NULL,NULL), (4,'报表类型','4','sys_link_type',NULL,'default','N','0','EoiAdmin','2023-06-26 15:00:13','EoiAdmin','2023-06-26 15:00:22',NULL); INSERT INTO "SYS_USER" ("DEPT_ID","USER_NAME","NICK_NAME","USER_TYPE","EMAIL","PHONENUMBER","SEX","AVATAR","PASSWORD","STATUS","DEL_FLAG","LOGIN_IP","LOGIN_DATE","CREATE_BY","CREATE_TIME","UPDATE_BY","UPDATE_TIME","REMARK","SSO_ID","SOURCE_BY","OTP_SK","SECRET_BASE32","EMPLOYEEID","EN_NAME","DEPARTMENT","LAST_PASSWORD_CHANGE_DATE") VALUES (103,'EoiAdmin','开发','00','','15888888888','0','','$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2','0','0','192.168.21.225','2024-07-09 11:56:23','admin','2023-02-14 11:03:47','','2024-07-08 23:56:23','管理员',20200321,'0','otpauth://totp/EoiAdmin@?secret=ISG5WRNRFRDXJAOQAEIJ33YDOBV2EUDOON766YF2TSODJ27XNIRQ&period=30&digits=6','ISG5WRNRFRDXJAOQAEIJ33YDOBV2EUDOON766YF2TSODJ27XNIRQ',NULL,NULL,NULL,'2024-07-08 23:56:23'), (103,'admin','管理员','00','admin@eoitek.com','15888880000','0','','$2a$10$erscMiICVJEZ7NjUA7kbZOXA2URJn3iSt2WdmvusqDVd7HzASIZWq','0','0','192.168.21.225','2024-07-10 11:40:09','admin','2023-02-14 11:03:47','admin','2024-07-09 23:40:08','管理员',20200321,'0','','6XJXUMWJACPXKLO3SU44HKDGEUDTQIG7PGJYHMLJO3W42GPIDSMA',NULL,NULL,NULL,'2024-07-09 23:40:08');

最终,大模型成功按要求处理了所有SQL语句,达到了预期效果。

经验总结

通过这次实践,我们总结出以下几点关键经验:

1. 明确需求:提示词必须清晰明确,涵盖具体需求和预期结果,避免歧义。

2. 提供示例: 通过提供多个正确示例,可以帮助大模型学习和理解需求,从而输出正确结果。

3. 反馈和调整: 针对初步结果进行反馈,调整提示词和示例,逐步优化输出效果。

4. 提示词工程:设计提示词时要注意逻辑性和层次性,使大模型能够逐步理解任务并正确执行。

结语

在实际应用中,利用大模型处理复杂任务不仅提升了效率,还保证了结果的准确性。然而,要充分发挥大模型的潜力,提示词工程和示例设计至关重要。未来,我将继续探索大模型在运维、项目管理和日常工作中的更多应用场景,帮助大家提高工作和学习效率。

通过此次SQL迁移的成功实践,我更加坚定了利用大模型提升工作效率和质量的信心。希望这次经验总结能为更多项目和团队提供借鉴。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!