当前位置: 首页 > news >正文

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

在现代化的项目管理和运维工作中,利用大模型(如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迁移的成功实践,我更加坚定了利用大模型提升工作效率和质量的信心。希望这次经验总结能为更多项目和团队提供借鉴。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣8,字符串转换整数
  • 搭建基于 ChatGPT 的问答系统
  • 代码随想录算法训练营DAY60|并查集理论基础、寻找存在的路径
  • 攻防世界(PHP过滤器过滤)file_include
  • html+css+js随机验证码
  • 文学式开发工具 Jupyter Notebook
  • 设计模式探索:观察者模式
  • vue draggable组件,拖拽元素时,获取元素上在data或setup中定义的数据
  • 【matlab】随机森林客户流失预测
  • Java之网络面试经典题(一)
  • hcip暑假第二次作业
  • Elasticsearch 更新指定字段
  • C++类和对象(一)
  • C++ 定时器触发
  • 苹果电脑可以玩魔兽世界吗 魔兽世界有mac版本么 macbook 可以玩魔兽世界吗
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 4个实用的微服务测试策略
  • github指令
  • IDEA 插件开发入门教程
  • java8 Stream Pipelines 浅析
  • JavaScript-Array类型
  • Java到底能干嘛?
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • leetcode386. Lexicographical Numbers
  • SQL 难点解决:记录的引用
  • 前端攻城师
  • 学习Vue.js的五个小例子
  • 学习笔记TF060:图像语音结合,看图说话
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • ​力扣解法汇总946-验证栈序列
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # C++之functional库用法整理
  • # Redis 入门到精通(七)-- redis 删除策略
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • ###STL(标准模板库)
  • #android不同版本废弃api,新api。
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (7)svelte 教程: Props(属性)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Note)C++中的继承方式
  • (三)终结任务
  • (四)图像的%2线性拉伸
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)甲方乙方——赵民谈找工作
  • ***检测工具之RKHunter AIDE
  • ***原理与防范
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET Core中Emit的使用
  • .NET 使用 XPath 来读写 XML 文件
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET建议使用的大小写命名原则
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @Transactional事务注解内含乾坤?
  • [BJDCTF2020]EzPHP1