有一个sql格式化的网站,可以将凌乱的语句格式化成多种数据库SQL格式。
它还有单机版的,网上有破解版。但有一些小瑕疵,就是对中文的支持有时候会显示成乱码,这让我有些不爽。
今天找到一个vim插件,可以轻松格式化SQL而且功能强大,此插件依赖插件。
安装 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
|
看起来要舒服多了。
阅读(3808) | 评论(0) | 转发(0) |