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

pg_service.conf:你团队遗忘的魔法

pg_service.conf你团队遗忘的魔法摘要本文介绍pg_service.conf这是一个简单的 INI 格式配置文件允许开发者为 PostgreSQL 定义命名的连接配置文件无需记忆复杂的连接字符串并通过配置文件中的统一服务别名实现无缝的环境切换。原文链接说实话我是个老派玩家。我的 IDE 是 vim。我的 PostgreSQL 客户端是 psql。我已经用了快 20 年了仍然认为它是最好的 PostgreSQL 客户端。我可能有偏见。当我加入一个新团队时我注意到一件事没人用 psql。大家都通过 IDE 连接。公平地说IDE 确实保存了连接配置文件。点击就进去了我理解。但我用的是 vim。所以我需要别的东西。这就是pg_service.conf。连接字符串的问题连接 PostgreSQL 时你需要记住一堆东西主机、端口、数据库名称和用户。这是四个容易出错的地方。更有趣的是PostgreSQL 中的数据库名称很少是同事们谈论时用的名字。他们说prod。实际的数据库叫mycompany_production_v2。祝你好运能记住这个。pg_service.conf 是什么它是一个简单的 INI 格式文件你可以在其中定义命名的连接配置文件。像这样[prod] hostdb.mycompany.com port5432 dbnamemycompany_production_v2 userlaetitia [staging] hostdb-staging.mycompany.com port5432 dbnamemycompany_staging userlaetitia就这样。现在连接时你只需要psqlserviceprod你用团队交流的方式来命名服务。不再需要人类名字和技术名字之间的 mental mapping。文件放在哪里两个选择每用户~/.pg_service.conf或$PGSERVICEFILE指向的位置系统级pg_service.conf在pg_config --sysconfdir返回的目录中如果同一服务名同时存在于两个文件中用户文件优先于系统级文件。如果你被困在 Windows 上而且在大公司里有时你没有选择用户文件位于%APPDATA%\postgresql\.pg_service.conf。它的作用方式相同。每个环境一个文件这里就变得非常有趣了。你可以每个环境一个文件。技巧在每个文件中使用相同的服务名称。我的~/.pg_service_prod.conf和我的~/.pg_service_staging.conf都有一个[db1]、一个[db2]、一个[reporting]。别名与我团队对这些数据库的称呼相匹配。只有连接细节不同。所以psql servicedb1始终意味着同样的事情。你连接到哪个db1取决于加载的是哪个文件。不需要编辑。不会出错。我更近一步。我们通过 AWS 连接到数据库这意味着需要身份验证、导出凭证然后连接。我把这一切包装成一个脚本接受两个参数环境和数据库别名。./connect.sh staging db1脚本处理 AWS 身份验证将PGSERVICEFILE设置到正确的文件然后调用psql servicedb1。一个命令。搞定。而且因为别名在文件间是一致的脚本保持简单。密码怎么办不要把密码放在服务文件里。真的。pg_service.conf的最佳搭档是.pgpass。它是另一个文件Linux/Mac 上是~/.pgpass你可以在其中存储密码按主机、端口、数据库和用户匹配。PostgreSQL 自动读取它。文件必须有0600权限否则 PostgreSQL 会拒绝使用它。这两个文件一起给你无密码连接而不会把任何敏感信息存储在可能不小心分享的文件中。最佳用例入职将系统级的pg_service.conf放入你的版本控制。当新成员加入团队时他们克隆仓库将文件复制到正确位置设置他们的.pgpass他们第一天就能连接到每个环境。没有嘿能把连接详情发给我吗的 Slack 消息。没有复制粘贴错误。没有把错误的主机放在错误的脚本里。还有一件事我说 psql 是最好的 PostgreSQL 客户端。我维护了整个网站来证明这一点psql-tips.org。如果你还不信去看看。如果 PostgreSQL 命令行工具的不一致性让你有点抓狂不同的标志、psql、pg_dump、pg_restore之间不兼容的语法……我也为此构建了一个 bash 包装器PG Lord of the Ring。一个工具统治它们全部。

相关文章:

pg_service.conf:你团队遗忘的魔法

pg_service.conf:你团队遗忘的魔法 摘要本文介绍 pg_service.conf,这是一个简单的 INI 格式配置文件,允许开发者为 PostgreSQL 定义命名的连接配置文件,无需记忆复杂的连接字符串,并通过配置文件中的统一服务别名实现…...

pg_column_size(): 眼见不一定为实

pg_column_size(): 眼见不一定为实 摘要本文探讨了 PostgreSQL 的 pg_column_size() 函数,并揭示了一个令人惊讶的行为:对于以行外方式存储的 TOASTed 值,该函数仅返回 18 字节的指针大小,而非实际数据大小,这可能导致…...

Java Iterator详解

Java Iterator详解 概述 Java的Iterator接口是Java集合框架中用于迭代(遍历)集合对象的一个接口。它提供了一种方式来遍历集合中的元素,而不需要暴露集合的内部结构。Iterator接口是Java集合框架中非常重要的一部分,它被广泛用于各种数据结构的遍历操作。 Iterator接口的…...

Git与GitHub:深入理解版本控制与代码托管

Git与GitHub:深入理解版本控制与代码托管 引言 在软件开发领域,版本控制和代码托管是至关重要的环节。Git和GitHub作为当前最流行的版本控制工具和代码托管平台,已经成为广大开发者必备的技能。本文将深入探讨Git和GitHub的基本概念、使用方法以及它们在软件开发中的重要性…...

避开Power BI数据导入的四大坑:从SQL Server连接到Excel表格的实战避坑指南

避开Power BI数据导入的四大坑:从SQL Server连接到Excel表格的实战避坑指南 当你第一次将SQL Server的销售数据与Excel的市场调研表格合并到Power BI时,那个红色感叹号就像一盆冷水浇下来——"查询超时"。这不过是数据工程师日常工作中的第一个…...

Android 4G上网协议解析:从PPP建立到数据传输全流程

1. Android 4G上网的硬件基础 当你用手机刷短视频时,有没有想过4G网络是怎么工作的?和家里WiFi不同,4G上网依赖的是基带模块这个"隐形英雄"。现代智能手机其实内置了两套网络硬件:WiFi模块用的是标准以太网卡&#xff0…...

锐捷交换机连接与故障排除实战指南

1. 锐捷交换机连接方式详解 第一次接触锐捷交换机的朋友可能会被各种连接方式搞晕,其实主要就两种场景:机房直连和远程调试。我管理过上百台锐捷设备,实测下来最稳定的还是控制台连接,不过具体用哪种方式得看现场条件。 先说说控制…...

CiteSpace 6.3.R1 从零到一:基于CNKI数据的科研图谱实战指南

1. CiteSpace入门:科研小白的知识图谱神器 第一次打开CiteSpace时,那个黑底红字的界面让我有点发怵——这玩意儿真能帮我写论文?但跟着导师操作了半小时后,我发现自己居然做出了能放进论文里的专业图谱。这款由陈超美教授开发的软…...

微信H5分享功能实战:从配置到卡片式分享的完整指南

1. 微信H5分享功能的核心原理 微信H5页面分享功能和小程序分享最大的区别在于触发方式。H5页面无法像小程序那样直接调用onShareAppMessage方法,而是需要用户主动点击右上角的菜单按钮才能触发分享。这个设计差异导致很多开发者第一次接触H5分享时会感到困惑。 微信…...

硬件加速与 OMX/Codec2:解密编解码器的底层世界

引言:那些"神秘"的 vendor 参数是怎么来的 用 MediaCodec 开发的时候,偶尔会看到这样的代码: format.setInteger("vendor.qti-ext-enc-ltr-count.num-ltr-frames", 4); format.setInteger("vendor.rtc-ext-enc-low-latency.enable", 1);这些…...

【GUI-Agent】阶跃星辰 GUI-MCP 解读---()---HITL(Human In The Loop)南

插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能,现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包,包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件&#xff0…...

绝区零自动化助手终极指南:如何实现游戏全自动一条龙服务

绝区零自动化助手终极指南:如何实现游戏全自动一条龙服务 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 还在为…...

Phi-4-Reasoning-Vision实战案例:电商商品图深度分析+隐藏线索识别

Phi-4-Reasoning-Vision实战案例:电商商品图深度分析隐藏线索识别 1. 工具介绍 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具。它专为双卡4090环境优化,能够对图片进行深度分析并识别隐藏线索&am…...

GoCodingInMyWay俜

一、什么是 Q 饱和运算? 1. 核心痛点:普通运算的 “数值回绕” 普通算术运算(如 ADD/SUB)溢出时,数值会按补码规则 “回绕”,导致结果完全错误: 示例:int8_t 类型最大值 127 1 → 结…...

Cadence 17.4 原理图分页符实战:解决‘1 of 1’报错,搞定多页连接

Cadence 17.4 原理图分页符深度解析:从报错诊断到高效设计实践 在复杂电路设计领域,Cadence 17.4作为行业标杆工具,其原理图设计功能直接影响着工程师的工作效率和设计质量。而多页原理图连接问题,尤其是分页符(off-page)配置不当…...

大模型推理硬件选型别再拍脑袋!SITS2026专家提炼的7步决策法(含量化评分卡+国产替代适配度评估表)

第一章:SITS2026专家:大模型推理加速硬件选型 2026奇点智能技术大会(https://ml-summit.org) 大模型推理对硬件的吞吐、延迟、显存带宽与能效比提出严苛要求。SITS2026专家团队基于千余次真实场景基准测试(包括Llama-3-70B、Qwen2-57B、Phi-…...

ROS机器人开发避坑指南:搞定PC、树莓派与STM32的三角通信(含完整代码与配置)

ROS多设备通信实战:PC、树莓派与STM32的高效协同架构设计 在机器人开发领域,ROS(Robot Operating System)已成为事实上的标准框架。但当我们需要将不同架构的计算设备(如x86的PC、ARM的树莓派和嵌入式STM32&#xff09…...

深入解析AXI VDMA:视频流高效传输的关键技术

1. AXI VDMA:视频处理的"高速公路收费站" 想象一下早晚高峰的城市环线,成千上万辆汽车需要有序通过收费站。AXI VDMA(Video Direct Memory Access)在视频处理系统中扮演的角色,就像这个智能收费站系统——它…...

从POC到千万级调用量:大模型灰度发布必须跨过的4道生死关(含真实故障复盘数据)

第一章:从POC到千万级调用量:大模型灰度发布必须跨过的4道生死关(含真实故障复盘数据) 2026奇点智能技术大会(https://ml-summit.org) 大模型服务在灰度发布过程中,常因流量突变、依赖耦合、推理不一致与可观测盲区而…...

在超大数据集下 DuckDB 与 MySQL 查询速度对比迂

一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…...

聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?戳

. GIF文件结构 相比于 WAV 文件的简单粗暴,GIF 的结构要精密得多,因为它天生是为了网络传输而设计的(包含了压缩机制)。 当我们用二进制视角观察 GIF 时,它是由一个个 数据块(Block) 组成的&…...

三大模块深度解析:让Mac鼠标滚动体验媲美触控板的Mos工具

三大模块深度解析:让Mac鼠标滚动体验媲美触控板的Mos工具 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction independentl…...

5步彻底解决BrushNet配置优化与ComfyUI模型加载故障排除

5步彻底解决BrushNet配置优化与ComfyUI模型加载故障排除 【免费下载链接】ComfyUI-BrushNet ComfyUI BrushNet nodes 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BrushNet 在AI图像修复ాలు中,## BrushాలుNet配置## 是## 影响ాలు 工作流程…...

终极网盘直链下载助手:八大平台一键获取真实链接,告别限速烦恼

终极网盘直链下载助手:八大平台一键获取真实链接,告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / …...

从Simulink到LabVIEW:VeriStand联合仿真中人机交互界面的高效构建与数据联动

1. VeriStand联合仿真基础架构解析 当我们需要将Simulink的算法模型与LabVIEW的人机界面进行深度整合时,VeriStand就像一位专业的翻译官。这个实时测试与仿真平台能够把不同软件的语言"翻译"成彼此都能理解的形式。我去年参与的新能源汽车电控项目就采用了…...

cv_unet_image-colorization跨平台部署:Windows与Linux性能对比

cv_unet_image-colorization跨平台部署:Windows与Linux性能对比 1. 环境准备与快速部署 想要让黑白照片变彩色,cv_unet_image-colorization是个不错的选择。不过在开始之前,得先准备好运行环境。Windows和Linux系统在部署时有些不同&#x…...

Web Scraper插件实战:从乱序爬取到精准数据抓取的五大技巧

1. 为什么你的爬取数据总是乱序? 第一次用Web Scraper插件爬豆瓣电影Top250时,我也遇到过数据错位的尴尬情况。明明页面上《肖申克的救赎》对应着"希望让人自由"的经典台词,导出的CSV里却变成了《霸王别姬》的剧情简介。这种张冠李…...

深入解析M.2 B Key接口在5G模块与(U)SIM卡电路设计中的关键应用

1. M.2 B Key接口与5G模块的完美结合 第一次接触M.2 B Key接口时,我完全被它的小巧和多功能性震惊了。这个看起来像迷你版SSD插槽的接口,竟然能承载5G模块这么复杂的通信功能。在实际项目中,我发现M.2 B Key接口特别适合嵌入式设备使用&#…...

SAC算法实战:用PyTorch手把手实现Soft Actor-Critic(附完整代码)

SAC算法实战:用PyTorch手把手实现Soft Actor-Critic(附完整代码) 强化学习领域近年来最令人兴奋的进展之一,莫过于Soft Actor-Critic(SAC)算法的崛起。这个融合了最大熵原理与离线策略学习的算法&#xff0…...

STM32 NVIC优先级设置详解:以红外传感器计数为例

STM32 NVIC优先级设置详解:以红外传感器计数为例 在嵌入式系统开发中,中断管理是确保实时响应和系统稳定性的核心机制。STM32微控制器凭借其强大的NVIC(嵌套向量中断控制器)为开发者提供了灵活的中断优先级配置方案。本文将以红外…...