首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

请教有什么好的方法可以从程序中解析出 sql 语句?

  •  
  •   zxq1002 · 2015-03-11 15:14:16 +08:00用 Android 发布 · 1524 次点击
    这是一个创建于 1537 天前的主题,其中的信息可能已经有所发展或是发生改变。
    从源码目录中解析出所有文件中的sql语句
    第 1 条附言  ·  2015-03-11 18:06:32 +08:00
    补充下,我是要获取应用所有代码和表之间的关联关系,所以先解析出sql,外从sql解析出表名
    12 回复  |  直到 2015-03-12 09:39:35 +08:00
        1
    sophymax   2015-03-11 15:25:36 +08:00
    想不出比正则更好的方法
        2
    router   2015-03-11 15:56:00 +08:00
    源码都有,还怕找不到地儿?
    正常情况,类似功能会写在一块儿,容易找的吧,如果访问db的写的很乱,你要解析这些干嘛呢?
        3
    dong3580   2015-03-11 16:00:21 +08:00
    @router
    你还真别说,遇到某些脑残的代码,SQL语句找不到一个。。。然后会发现各种拼接,正则无能为力,这个时候只能顺着路走代码,没办法。
        4
    shiny   2015-03-11 16:02:26 +08:00
    讲讲为什么需要这么做,应该会有更好的建议。
        5
    liwei   2015-03-11 16:07:13 +08:00
    把数据库的接口加一层封装,在执行SQL前把SQL打印出来。
        6
    linzy   2015-03-11 16:57:47 +08:00
    mssql的话,可以用sqlprofile工具,跑一下程序,都捕获到了~~
        7
    xinple   2015-03-11 17:19:39 +08:00
    修改数据库类,每次执行sql语句的时候,把sql语句记录到log
    然后程序跑一边
        8
    hackwjfz   2015-03-11 17:28:44 +08:00 via Android
    MySQL的话,日志可以记录造成修改的sql语句。
    用--log-bin选项启动,mysqld将数据变更情况写入日志。
    通过mysqlbinlog工具查看。
        9
    kchum   2015-03-11 17:31:29 +08:00
    @hackwjfz 这个效率快多了,每一个框架都不一样,有些可能还有 SQL 输出,自建框架,那就头大了。
        10
    kchum   2015-03-11 17:32:03 +08:00
    还有是否考虑是否部分加密的问题。
        11
    ETiV   2015-03-11 18:14:09 +08:00 via iPhone
    关键字:mysql general-log
    自己搜
        12
    zxq1002   2015-03-12 09:39:35 +08:00 via Android
    @ETiV
    @hackwjfz
    @linzy
    不是mysql,是oracle,程序量比较大,类型也很多,java,pro*c,shell,package等等都有
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1224 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 17:21 · PVG 01:21 · LAX 10:21 · JFK 13:21
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1