news 2026/4/23 14:50:14

PostgreSQL 18 远程操作实战:从连接到备份的操作实践记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL 18 远程操作实战:从连接到备份的操作实践记录

PostgreSQL 18 远程操作实战:从连接到备份的完整指南

引言

作为一名开发者,掌握数据库的基本操作是必备技能之一。最近我在 Ubuntu 24.04 服务器上安装了 PostgreSQL 18,为了更好地理解和掌握 PostgreSQL 的日常管理和操作,我进行了一系列的远程操作演示。本文将详细记录整个操作过程,包括遇到的问题、解决方案和学习心得,希望对大家有所帮助。

操作环境

  • 服务器:Ubuntu 24.04
  • PostgreSQL 版本:18.1
  • 客户端:Windows 10 + PowerShell 7
  • 连接方式:SSH

操作过程

1. 远程连接到服务器

首先,我需要通过 SSH 连接到远程服务器。使用以下命令:

ssh-t -p<端口号><用户名>@<服务器IP地址>

其中:

  • -t参数:强制分配伪终端
  • -p <端口号>:指定 SSH 端口
  • <用户名>@<服务器IP地址>:用户名和服务器 IP 地址

2. 查看 PostgreSQL 版本

连接到服务器后,我需要查看 PostgreSQL 的版本信息,确认安装是否成功:

echo"<sudo密码>"|sudo-S -u postgres psql -c'SELECT version();'

输出结果:

PostgreSQL 18.1 (Ubuntu 18.1-1.pgdg24.04+2) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, 64-bit

3. 查看数据库列表

接下来,我需要查看当前服务器上的数据库列表:

echo"<sudo密码>"|sudo-S -u postgres psql -c'\l'

输出结果显示了 4 个数据库:postgres、template0、template1 和之前创建的 test_db。

4. 创建新数据库

我将创建一个名为 demo_db 的新数据库用于演示:

echo"<sudo密码>"|sudo-S -u postgres psql -c'CREATE DATABASE demo_db;'

输出结果:

CREATE DATABASE

5. 创建表

现在,我将在 demo_db 数据库中创建一个名为 users 的表:

echo"<sudo密码>"|sudo-S -u postgres psql -d demo_db -c'CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);'

输出结果:

CREATE TABLE

6. 插入数据

创建表后,我需要插入一些测试数据。这是我遇到问题最多的一步,主要是因为引号转义的问题。

第一次尝试(失败)

echo"<登录密码>"|sudo-S -u postgres psql -d demo_db -c'INSERT INTO users (name, email) VALUES (\"张三\",\"zhangsan@example.com\"), (\"李四\",\"lisi@example.com\"), (\"王五\",\"wangwu@example.com\");'

错误信息:

ERROR: syntax error at or near "\""

第二次尝试(失败)

echo"<登录密码>"|sudo-S -u postgres psql -d demo_db -c'INSERT INTO users (name, email) VALUES (`"张三`",`"zhangsan@example.com`"), (`"李四`",`"lisi@example.com`"), (`"王五`",`"wangwu@example.com`");'

错误信息:

ERROR: column "张三" does not exist

最终解决方案

在 PowerShell 中,正确的单引号转义方式是使用两个单引号''表示一个单引号'

ssh-t -p<端口号><用户名>@<服务器IP地址>'echo "<sudo密码>" | sudo -S -u postgres psql -d demo_db -c "INSERT INTO users (name, email) VALUES (''test'',''test@example.com'');"'

输出结果:

INSERT 0 1

7. 查询数据

插入数据成功后,我需要查询数据,验证插入是否成功:

ssh-t -p<端口号><用户名>@<服务器IP地址>'echo "<sudo密码>" | sudo -S -u postgres psql -d demo_db -c "SELECT * FROM users;"'

输出结果:

id | name | email | created_at ----+------+------------------+---------------------------- 1 | test | test@example.com | 2025-12-16 07:14:19.664278 (1 row)

8. 创建索引

为了提高查询性能,我需要为 users 表的 email 字段创建索引:

ssh-t -p<端口号><用户名>@<服务器IP地址>'echo "<sudo密码>" | sudo -S -u postgres psql -d demo_db -c "CREATE INDEX idx_users_email ON users(email);"'

输出结果:

CREATE INDEX

9. 更新数据

现在,我需要更新一条数据,测试更新操作:

ssh-t -p<端口号><用户名>@<服务器IP地址>'echo "<sudo密码>" | sudo -S -u postgres psql -d demo_db -c "UPDATE users SET name = ''updated_test''WHEREid=1;"'

输出结果:

UPDATE 1

10. 验证更新结果

更新数据后,我需要验证更新是否成功:

ssh-t -p<端口号><用户名>@<服务器IP地址>'echo "<sudo密码>" | sudo -S -u postgres psql -d demo_db -c "SELECT * FROM users;"'

输出结果:

id | name | email | created_at ----+--------------+------------------+---------------------------- 1 | updated_test | test@example.com | 2025-12-16 07:14:19.664278 (1 row)

11. 数据库备份

最后,我需要演示数据库备份操作,这是数据库管理中的重要环节:

ssh-t -p<端口号><用户名>@<服务器IP地址>'echo "<sudo密码>" | sudo -S -u postgres bash -c "pg_dump -d demo_db -f /tmp/demo_db_backup.sql && echo\"Backup completed successfully!\""'

遇到的问题与解决方案

问题1:引号转义问题

现象:在 PowerShell 中执行包含单引号的 SQL 语句时,出现语法错误。

解决方案:在 PowerShell 中,正确的单引号转义方式是使用两个单引号''表示一个单引号'

问题2:连接被关闭

现象:执行某些命令时,SSH 连接突然被关闭。

解决方案:确保命令语法正确,特别是引号和括号的匹配。

问题3:权限问题

现象:执行某些命令时,出现权限拒绝的错误。

解决方案:使用sudo命令获取管理员权限,并确保使用正确的用户名和密码。

学习总结

通过这次 PostgreSQL 18 远程操作实战,我学到了以下知识和经验:

1. PostgreSQL 基本操作

  • 如何连接到远程 PostgreSQL 数据库
  • 如何创建和管理数据库
  • 如何创建和管理表
  • 如何插入、查询、更新和删除数据
  • 如何创建索引
  • 如何备份数据库

2. 远程操作技巧

  • 在 PowerShell 中正确转义引号
  • 使用sudo命令获取管理员权限
  • 使用ssh -t参数强制分配伪终端
  • 使用psql -c参数执行单行 SQL 命令
  • 使用psql -d参数指定数据库

3. 最佳实践

  • 始终使用参数化查询,避免 SQL 注入
  • 为经常查询的字段创建索引,提高查询性能
  • 定期备份数据库,确保数据安全
  • 使用事务管理复杂操作,确保数据一致性
  • 遵循命名规范,提高代码可读性和可维护性

结语

PostgreSQL 是一款功能强大的开源关系型数据库,掌握其基本操作对于开发者来说是非常重要的。通过这次远程操作实战,我不仅掌握了 PostgreSQL 的基本操作,还学会了如何在远程环境中高效地管理和操作数据库。

在实际工作中,我们还需要学习更多高级特性,如事务管理、性能优化、高可用配置等。希望这篇博客能够帮助大家更好地理解和掌握 PostgreSQL 的基本操作,为后续的学习和工作打下坚实的基础。

最后,感谢大家的阅读,如有任何问题或建议,欢迎在评论区留言讨论!

参考资源

  • PostgreSQL 官方文档
  • PostgreSQL 中文文档
  • PostgreSQL 教程
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:17:16

基于LobeChat的客户支持机器人设计与落地案例

基于LobeChat的客户支持机器人设计与落地案例 在客户服务领域&#xff0c;一个看似简单的问题——“我该怎么重置密码&#xff1f;”——背后往往隐藏着巨大的运营成本。传统客服系统依赖人工响应&#xff0c;面对高频、重复性咨询时&#xff0c;不仅效率低下&#xff0c;还容易…

作者头像 李华
网站建设 2026/4/23 11:25:10

人脸识别技术:从传统方法到深度学习的演进路径

人脸识别作为计算机视觉领域最具实用性的任务之一&#xff0c;已深度渗透至身份验证、安防监控、金融风控等场景。其技术演进的核心逻辑&#xff0c;本质是「特征表示能力」与「泛化鲁棒性」的迭代——从依赖人工设计的传统方法&#xff0c;到以数据驱动的深度学习模型&#xf…

作者头像 李华
网站建设 2026/4/23 12:29:13

还在熬夜写论文?6个免费AI神器:选题大纲开题初稿降重全搞定!

还在为了论文选题而绞尽脑汁&#xff0c;在浩如烟海的文献中迷失方向吗&#xff1f;还在通宵达旦地赶初稿&#xff0c;却始终难以落笔&#xff0c;被截止日期追得喘不过气吗&#xff1f;还在面对导师密密麻麻的修改意见&#xff0c;反复返工却依然达不到要求&#xff0c;陷入无…

作者头像 李华
网站建设 2026/4/23 12:29:16

数据结构入门:哈希表和树结构

一、排序 二分查找&#xff1a;基于有序结构的高效查找1.1. 基本流程对于无序数据集&#xff0c;先通过排序将其转化为有序结构&#xff0c;再利用二分查找实现高效查询&#xff1a;排序阶段&#xff1a;采用时间复杂度为 O(nlogn) 的算法&#xff08;如快速排序、归并排序&am…

作者头像 李华
网站建设 2026/4/23 12:29:18

Qwen-Image与CLIP融合实现精准图文匹配

让AI真正“读懂”你的每一句话&#xff1a;Qwen-Image与CLIP融合下的图文匹配新范式 你有没有试过这样一条提示词&#xff1a;“穿着汉服的程序员在故宫敲代码&#xff0c;屏幕上滚动着Python脚本&#xff0c;窗外烟花绽放写着‘2025’”。点击生成后&#xff0c;画面确实古风十…

作者头像 李华
网站建设 2026/4/23 12:10:21

Markdown语法详解:为你的TensorFlow技术博客排版加分

Markdown 与 TensorFlow&#xff1a;如何用简洁排版释放深度学习表达力 在 AI 开发者的日常中&#xff0c;有一个场景几乎无人不晓&#xff1a;你终于调通了一个复杂的模型&#xff0c;训练准确率突破了预期&#xff0c;满心欢喜地准备把成果写成博客分享出去——结果打开编辑器…

作者头像 李华