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

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

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