文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>[原创]vim格式化SQL

[原创]vim格式化SQL

时间:2010-09-05  来源:kevinbin

有一个sql格式化的网站,可以将凌乱的语句格式化成多种数据库SQL格式。 http://www.dpriver.com/pp/sqlformat.htm 它还有单机版的,网上有破解版。但有一些小瑕疵,就是对中文的支持有时候会显示成乱码,这让我有些不爽。 今天找到一个vim插件SQLUtilities,可以轻松格式化SQL而且功能强大,此插件依赖Align插件。
安装 sqluti

cp -r autoload ~/.vim
cp -r plugin ~/.vim
cp -r doc ~/.vim

安装 Align

vim Align.vba.gz
:so %
:q


贴下我的vimrc相关配置

vmap <leader>sf <Plug>SQLU_Formatter<CR>
nmap <leader>scl <Plug>SQLU_CreateColumnList<CR>
nmap <leader>scd <Plug>SQLU_GetColumnDef<CR>
nmap <leader>scdt <Plug>SQLU_GetColumnDataType<CR>
nmap <leader>scp <Plug>SQLU_CreateProcedure<CR>
let g:sqlutil_load_default_maps = 1


执行格式化 v 进入可视化模式,选中要格式化的语句,然后:'<,'>SQLUFormatter 或 命令模式下执行 :始行号,末行号SQLUFormatter 另外还有两种方法help sqlutilities有描述。 此插件还有许多选项供调整格式化后的语句样式可参考帮助文件。
示例 格式化前

SELECT m.MSG_ID, m.PRIORITY_ID, CUST.CUST_NBR, CUST.CUST_NM,
    CUST.CUST_LEGAL_NM, CUST.STORE_ADDR_1, CUST.STORE_ADDR_2,
    CUST.CROSS_STREET, XMLELEMENT( 'Alerts', XMLELEMENT( 'Alert_alert_id',
    alert_id ), XMLELEMENT( 'Alert_agent_id', agent_id ), XMLELEMENT(
    'Alert_alert_type_id', alert_type_desc), XMLELEMENT(
    'Alert_alert_date', alert_date), XMLELEMENT(
    'Alert_url_reference', url_reference), XMLELEMENT(
    'Alert_read_status', read_status )) CUST.STORE_CITY,
    CUST.STORE_ST, CUST.POST_CODE, CUST.STORE_MGR_NM, FROM MESSAGES m JOIN
    PRIORITY_CD P WHERE m.to_person_id = ? AND p.NAME = 'PRI_EMERGENCY' AND
    p.JOB = 'Plumber' AND m.status_id < ( SELECT s.STATUS_ID FROM
    MSG_STATUS_CD s WHERE s.NAME = 'MSG_READ') ORDER BY m.msg_id desc


格式化后

SELECT m.MSG_ID, m.PRIORITY_ID, CUST.CUST_NBR, CUST.CUST_NM,
           CUST.CUST_LEGAL_NM, CUST.STORE_ADDR_1,    CUST.STORE_ADDR_2,
           CUST.CROSS_STREET,
           XMLELEMENT(
               'Alerts', XMLELEMENT( 'Alert_alert_id', alert_id ),
               XMLELEMENT( 'Alert_agent_id', agent_id ),
               XMLELEMENT( 'Alert_alert_type_id', alert_type_desc),
               XMLELEMENT( 'Alert_alert_date', alert_date),
               XMLELEMENT(
                   'Alert_url_reference', url_reference
                ), XMLELEMENT( 'Alert_read_status', read_status )
           ) CUST.STORE_CITY, CUST.STORE_ST, CUST.POST_CODE,
           CUST.STORE_MGR_NM
      FROM MESSAGES m
      JOIN PRIORITY_CD P
     WHERE m.to_person_id = ?
       AND p.NAME = 'PRI_EMERGENCY'
       AND p.JOB = 'Plumber'
       AND m.status_id < (
            SELECT s.STATUS_ID
              FROM MSG_STATUS_CD s
             WHERE s.NAME = 'MSG_READ'
           )
     ORDER BY m.msg_id desc


看起来要舒服多了。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载