pg_prettify 命令行工具,用于格式化(美化)SQL 查询语句。以下是内容总结:
一、工具背景
- 作者在一个月前开发了一个 SQL 查询"美化器"(pretty-printer)。
- 本次为其添加了命令行界面,方便日常使用。
二、工具信息
- 名称 :
pg_prettify - 仓库地址 :shell_utils repo(GitLab)
三、使用示例
1. 原始 SQL(未格式化):
sql
SELECT n.nspname as "Schema", p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types", CASE
p.prokind WHEN 'a' THEN 'agg' WHEN 'w' THEN 'window' WHEN 'p' THEN 'proc'
ELSE 'func' END as "Type" FROM pg_catalog.pg_proc p LEFT JOIN
pg_catalog.pg_namespace n ON n.oid = p.pronamespace WHERE
pg_catalog.pg_function_is_visible(p.oid) AND n.nspname <> 'pg_catalog' AND
n.nspname <> 'information_schema' ORDER BY 1, 2, 4;
2. 使用 pg_prettify 格式化后:
sql
SELECT
n.nspname AS "Schema",
p.proname AS "Name",
pg_catalog.pg_get_function_result( p.oid ) AS "Result data type",
pg_catalog.pg_get_function_arguments( p.oid ) AS "Argument data types",
CASE p.prokind
WHEN 'a' THEN 'agg'
WHEN 'w' THEN 'window'
WHEN 'p' THEN 'proc'
ELSE 'func'
END AS "Type"
FROM
pg_catalog.pg_proc AS p
LEFT JOIN pg_catalog.pg_namespace AS n ON n.oid = p.pronamespace
WHERE
pg_catalog.pg_function_is_visible( p.oid ) AND
n.nspname <> 'pg_catalog' AND
n.nspname <> 'information_schema'
ORDER BY
1,
2,
4;
-- Formatted by Pg::SQL::PrettyPrinter
四、命令行选项
bash
$ pg_prettify -h
Syntax:
pg_prettify [-s] [-u URL] [-p PARAM_NAME] < input.file
or
pg_prettify [-s] [-u URL] [-p PARAM_NAME] input.file
Options:
-s - 移除格式化工具的注释(即不显示"Formatted by ...")
-u - 指定美化服务的URL,默认为 https://paste.depesz.com/prettify
-p - 指定HTTP参数名称,默认为 q
五、总结
该工具能够将杂乱或压缩的 SQL 语句自动格式化为结构清晰、易读的样式,支持通过命令行直接使用或配合文件输入,并提供了简单的自定义选项。适用于需要频繁查看或分享 SQL 代码的开发者和数据库管理员。