news 2026/5/17 2:36:22

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/5/16 20:28:24

基于STM32单片机太阳能风能路灯风光互补锂电池PWM调光蓝牙无线APP/WiFi无线APP/摄像头视频监控/云平台设计S353

STM32-S353-太阳能风能USB灯光照锂电池电压电量充电电压自动手动升压声光提醒OLED屏阈值按键(无线方式选择)产品功能描述&#xff1a;本系统由STM32F103C8T6单片机核心板、OLED屏、&#xff08;无线蓝牙/无线WIFI/无线视频监控/联网云平台模块-可选&#xff09;、太阳能电池板、…

作者头像 李华
网站建设 2026/5/16 22:07:21

还在熬夜赶毕业论文?7款免费AI神器帮科研党轻松搞定!

还在为写论文而日夜颠倒、熬到秃头吗&#xff1f;还在面对堆积如山的文献资料&#xff0c;却不知如何综述而发愁吗&#xff1f;还在为导师的修改意见而摸不着头脑&#xff0c;反复修改却依旧达不到要求吗&#xff1f;如果你正面临这些问题&#xff0c;那么请接着往下看&#xf…

作者头像 李华
网站建设 2026/5/17 0:57:08

00、生成式人工智能初学者指南-本地环境搭建

在正式开课之前需要在本地搭建好开发测试环境&#xff0c;这是一切的基础&#xff01; 一、如何在本地运行代码 要在本地运行代码&#xff0c;您需要安装某个版本的 Python。 然后使用代码库&#xff0c;您需要克隆它&#xff1a; git clone https://github.com/microsoft/…

作者头像 李华
网站建设 2026/5/15 23:21:59

GitHub Copilot辅助编写TensorFlow代码:结合本地清华源环境

GitHub Copilot辅助编写TensorFlow代码&#xff1a;结合本地清华源环境 在深度学习项目开发中&#xff0c;一个常见的场景是&#xff1a;你刚搭建好开发环境&#xff0c;准备复现一篇论文的模型结构&#xff0c;却卡在了第一步——安装 TensorFlow。pip install tensorflow 命…

作者头像 李华
网站建设 2026/5/12 0:24:28

用Wan2.2-T2V-A14B生成高保真720P视频

用文字拍电影&#xff1a;Wan2.2-T2V-A14B 如何让想象跃然“屏”上 你有没有过这样的瞬间&#xff1f; 脑海中浮现出一幅画面&#xff1a;夕阳下&#xff0c;穿红裙的女孩在樱花雨中缓缓旋转&#xff0c;花瓣随风飘散&#xff0c;慢镜头捕捉她发丝扬起的弧度——美得像电影镜头…

作者头像 李华