当前位置: 首页 > news >正文

使用psql执行带变量的sql脚本

文章目录

  • 环境
  • 文档用途
  • 详细信息

环境

系统平台:N/A
版本:4.5,9.0

文档用途

介绍

  • 日常使用psql进行运维时可以将常用的运维脚本整合为sql文件,并在psql中执行\i可以调用sql文件以提高运维效率。
  • 本篇文章将介绍如果sql文件中存在变量,如何在psql中调用该sql文件,更一步提升运维效率。

详细信息

实现流程

脚本准备
准备一个查询表信息的sql脚本,并对表名采用变量的形式进行编辑,脚本参考如下

SELECT:'tablename'AStable_name,pg_size_pretty(pg_relation_size(:'tablename'))ASmain_data_file_size,pg_size_pretty(pg_relation_size(:'tablename','fsm'))ASfsm_size,pg_size_pretty(pg_relation_size(:'tablename','vm'))ASvm_size,pg_size_pretty(pg_relation_size(:'tablename','init'))ASinit_size,pg_size_pretty(pg_relation_size(pg_class.reltoastrelid))AStoast_table_size,pg_size_pretty(pg_table_size(:'tablename'))ASpg_table_size,pg_size_pretty(pg_total_relation_size(:'tablename'))ASpg_total_relation_sizeFROMpg_classWHERErelname=:'tablename';

表名为字符串,变量编写应该为:‘tablename’,tablename为变量名,可自定义。

调用脚本

正常使用psql登录后,先给变量赋值,然后测试调用脚本

[root@hgdb1 ~]# psql -U sysdba NOTICE: ------------------------------------------- Login User: sysdba Login time: 2026-03-05 14:22:46.933145+08 Login Address: [local] Last Login Status: SUCCESS Login Failures: 0 Valied Until: infinity ------------------------------------------- psql (4.5) Type "help" for help. highgo=# highgo=# \set tablename test2 highgo=# \i table.sql table_name | main_data_file_size | fsm_size | vm_size | init_size | toast_table_size | pg_table_size | pg_total_relation_size ------------+---------------------+----------+---------+-----------+------------------+---------------+------------------------ test2 | 0 bytes | 0 bytes | 0 bytes | 0 bytes | 0 bytes | 8192 bytes | 8192 bytes 在psql给变量赋值的命令为\set 变量名 赋值,即本次测试为给变量tablename赋值为test2,然后执行\i table.sql调用脚本
http://www.jsqmd.com/news/775134/

相关文章:

  • Product Hunt 2025-10-03 每日热榜背后:技术架构深度剖析
  • SkeyeVSS开发FAQ:国标视频流媒体转码与多码率自适应
  • 为什么现在的电商API,正在从“搬运工”变成“决策者”?
  • 保障高并发业务稳定,浅谈大模型API的容灾与路由策略
  • PaperClaw:基于Rust的高效Git仓库历史分析命令行工具
  • 【开源项目】EasyTier — 轻量级去中心化 SD-WAN 新范式
  • 关于tuna mini midi官方编辑器键盘无法连接问题的解决
  • cad输出PDF时画的内容消失内容是空的PDF打印不全只占A4纸的一部分
  • Acrobat Distiller 无法创建临时文件夹 错误183
  • Vue3 v-model 双向绑定深度解析与实战避坑指南
  • SkeyeVSS开发FAQ:ONVIF设备接入与异厂兼容
  • VSCode 自带终端与 PowerShell 配置有什么优劣对比?
  • 从零搭建Air8101诗词闯关APP,基于LuatOS的嵌入式UI开发实操教程
  • 构建多模型智能客服时如何利用 Taotoken 管理后端调用
  • 如何用Universal-Updater高效管理3DS自制软件:5个实用技巧
  • OneSkill:为AI Agent打造应用商店,一键扩展技能生态
  • ASMR下载工具:轻松构建个人ASMR音频库的完整指南
  • 天赐范式第34天:关于确定性偏差与可控能量通道的一个科学猜想
  • 京东自动抢购终极指南:Python脚本轻松搞定限量商品
  • eNSP 模拟器助力 HCIA 学习:网络工程师入门进阶指南
  • Atlas300I推理卡驱动适配Linux 6.12+内核
  • Transformer与NLP迁移学习:从BERT到LLM的实践指南与资源导航
  • DLNA技术解析:智能家居媒体共享的核心框架
  • ubuntu20.04修复.activate包
  • 量子计算中的自适应插值量子变换(AIQT)技术解析
  • 做海外盲盒APP选什么开发语言 稳定还适配欧美用户 太实用了
  • 如何用d3dxSkinManage轻松管理3DMigoto皮肤Mod:从混乱到有序的5个关键技巧
  • 维铂叁科普知识丨什么是去中心化自治组织(DAO)?
  • BBDown终极指南:高效下载B站视频的专业级命令行工具
  • SONOFF Zigbee Bridge Ultra网关评测与智能家居部署指南