V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
idoubi
V2EX  ›  分享创造

我写了一个用 SQL 转换 Go struct 的工具

  •  
  •   idoubi · 2022-06-27 10:08:00 +08:00 · 2540 次点击
    这是一个创建于 887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Go web 开发中,在操作 db 的时候经常需要写一个 model 来映射需要用到的数据表字段。如果要映射的表字段比较多,在 Go struct 定义时一个一个去写非常麻烦。

    五年前我写了一个叫做 sql2struct 的工具,可以通过 SQL 建表语句,自动转换成 Go struct 。

    之前的版本只提供了 chrome 插件的使用渠道,最近使用新的技术栈重构了一版,新版样式长这样:

    在数据库客户端通过 show create table xxx\G; 导出建表的 SQL 语句,粘贴到左侧的输入框,即可在右侧自动生成 Go struct 定义代码。

    • 支持自定义需要生成的 Go struct tags ;
    • 支持自定义在 Go struct 中需要全部大写的特殊字段;
    • 支持自定义 SQL 字段与 Go struct 字段的映射关系;

    在线使用地址:https://dou.tools/sql2struct/

    源码地址:https://github.com/idoubi/sql2struct

    详细介绍博文:https://idoubi.cc/posts/sql2struct-new-version/

    欢迎各位 V 友体验。现学现写的 typescript + react + vite + pnpm 项目,代码不规范之处,欢迎指点。

    14 条回复    2022-06-28 12:07:56 +08:00
    nash
        1
    nash  
       2022-06-27 10:14:32 +08:00
    你这个 gorm 的生成是不是差点东西
    idoubi
        2
    idoubi  
    OP
       2022-06-27 10:41:43 +08:00 via iPhone
    @nash 差了啥
    to2false
        3
    to2false  
       2022-06-27 10:52:41 +08:00   ❤️ 1
    idoubi
        4
    idoubi  
    OP
       2022-06-27 11:11:35 +08:00
    @to2false 功能挺全的
    sadfQED2
        5
    sadfQED2  
       2022-06-27 11:20:19 +08:00 via Android
    哈哈哈,巧了巧了,一样的工具我也写了一个

    https://tools.jinnrry.com
    cheng6563
        6
    cheng6563  
       2022-06-27 16:31:21 +08:00
    支持 Oracle 吗
    idoubi
        7
    idoubi  
    OP
       2022-06-27 16:51:09 +08:00 via iPhone
    @cheng6563 Oracle 建表语句跟 mysql 差别很大吗?
    idoubi
        8
    idoubi  
    OP
       2022-06-27 16:51:18 +08:00 via iPhone
    @sadfQED2 很棒
    cheng6563
        9
    cheng6563  
       2022-06-27 17:06:58 +08:00
    @idoubi 说大不大说小不小。。
    idoubi
        10
    idoubi  
    OP
       2022-06-27 17:52:44 +08:00 via iPhone
    @cheng6563 你可以试一下。只要满足我那个匹配的正则表达式应该就行
    v2defy
        11
    v2defy  
       2022-06-28 07:37:56 +08:00 via Android
    ikaros
        12
    ikaros  
       2022-06-28 09:30:50 +08:00
    我的需求是反向的,写完 struct 需要转 sql, 一般我都是用 gorm migrator.CreateTable() 然后把 sql 复制出来自己加索引
    waltcow
        13
    waltcow  
       2022-06-28 09:40:33 +08:00
    有空研究下 sql2Protobuf
    idoubi
        14
    idoubi  
    OP
       2022-06-28 12:07:56 +08:00 via iPhone
    @waltcow 确实是刚需
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2790 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:46 · PVG 20:46 · LAX 04:46 · JFK 07:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.