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

Postgresql 开发环境搭建指南(WindowsLinux)

一、Postgresql 简介

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。

RDBMS 是关系数据库管理系统,是建立实体之间的联系,最后得到的是关系表。

ORDBMS在原来关系数据库的基础上,增加了一些新的特性。

1、优势

  • PostgreSQL数据库是目前功能最强大的开源数据库,它是最接近工业标准SQL92的查询语言,至少实现了SQL:2011标准中要求的179项主要功能中的160项(注:目前没有哪个数据库管理系统能完全实现SQL:2011标准中的所有主要功能)。

  • 稳定可靠:PostgreSQL是唯一能做到数据零丢失的开源数据库。目前有报道称国内外有部分银行使用PostgreSQL数据库。

  • 开源省钱: PostgreSQL数据库是开源的、免费的,而且使用的是类BSD协议,在使用和二次开发上基本没有限制。

  • 支持广泛:PostgreSQL 数据库支持大量的主流开发语言,包括C、C++、Perl、Python、Java、Tcl以及PHP等。

  • PostgreSQL社区活跃:PostgreSQL基本上每3个月推出一个补丁版本,这意味着已知的Bug很快会被修复,有应用场景的需求也会及时得到响应。

2、特征

  • 函数:通过函数,可以在数据库服务器端执行指令程序。

  • 索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。

  • 触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。

  • 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。

  • 规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。

  • 数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据等。

  • 全文检索:通过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。

  • NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。

  • 数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。

3、学习资料

中文官网 postgresql.ac.cn

官网文档 https://postgresql.ac.cn/docs/

二、环境搭建

1、安装 PostgreSQL

1.1、Windows 环境

这里使用 EnterpriseDB 来下载安装,EnterpriseDB 是全球唯一一家提供基于 PostgreSQL 企业级产品与服务的厂商。

下载地址:EDB: Open-Source, Enterprise Postgres Database Management

这里我们选择最新版本 16.4,下载网速有点慢,

配置安装目录,

配置需要安装的组件,全选,

配置数据目录,

配置超管账号密码,

配置端口号,

安装完毕。

1.2、Linux 环境

最终会跳转到指南页面,https://www.postgresql.org/download/linux/ubuntu/

一般的流程是引入软件包下载源,然后进行 apt 安装软件包,Ubuntu 通常已经包含了 postgresql 软件源,

sudo apt install -y postgresql-common 
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
# 安装最新版本的 postgresql
sudo apt install postgresql -y

查看运行状态跟版本,

sudo systemctl is-active postgresql
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
psql --version

安装过程会创建一个名为postgres的与默认postgres角色关联的用户账号,我们可以通过该账号来访问 PostgreSQL,

sudo -i -u postgres
(base) sam@sam-PC:~$ sudo -i -u postgres
postgres@sam-PC:~$ psql
psql (11.18 (Deepin 11.18-0+deb10u1))
输入 "help" 来获取帮助信息.

postgres=# help
您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面
键入: \copyright 显示发行条款
       \h 显示 SQL 命令的说明
       \? 显示 pgsql 命令的说明
       \g 或者以分号(;)结尾以执行查询
       \q 退出
postgres=# \q
postgres@sam-PC:~$ exit
注销
(base) sam@sam-PC:~$ 

2、PostgreSQL GUI 工具

官网地址 https://www.pgadmin.org/

2.1、Windows 环境

PostgreSQL 安装包也自带有 pgadmin4,

点击左上角 Servers,

输入账号密码,

打开查询窗口,

界面支持中文,

模式默认是桌面,也可以支持 Web 模式,

D:\app\PostgreSQL\16\pgAdmin 4\python>python.exe ../web/pgAdmin4.py

- couldn't import psycopg 'c' implementation: DLL load failed while importing pq: 找不到指定的模块。
- couldn't import psycopg 'binary' implementation: No module named 'psycopg_binary'
- couldn't import psycopg 'python' implementation: libpq library not found

这个错误信息表明在尝试导入 psycopg 模块时出现了问题,具体是因为找不到 libpq 库。但是安装 PostgreSQL 时已经有这些库了。
# 解决方案:
D:\app\PostgreSQL\16\bin 添加到系统变量 path 中

http://127.0.0.1:5050/browser/

2.2、Linux 环境

2.2.1、使用软件仓库安装 pgadmin4
#
# Setup the repository
#

# Install the public key for the repository (if not done previously):
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg

# Create the repository configuration file:
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

#
# Install pgAdmin
#

# Install for both desktop and web modes:
sudo apt install pgadmin4

# Install for desktop mode only:
sudo apt install pgadmin4-desktop

# Install for web mode only: 
sudo apt install pgadmin4-web 

# Configure the webserver, if you installed pgadmin4-web:
sudo /usr/pgadmin4/bin/setup-web.sh

遇到报错,

(base) sam@sam-PC:~$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
命中:2 https://community-packages.deepin.com/deepin apricot InRelease                         
命中:3 https://pro-driver-packages.uniontech.com eagle InRelease                              
命中:4 https://community-packages.deepin.com/driver driver InRelease                                                                  
命中:5 https://community-packages.deepin.com/printer eagle InRelease                                                                  
命中:1 https://app-store-files.uniontech.com/240828152202655/appstore deepin InRelease                                                
忽略:6 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/apricot pgadmin4 InRelease                            
错误:7 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/apricot pgadmin4 Release
  404  Not Found [IP: 72.32.157.246 443]
正在读取软件包列表... 完成
E: 仓库 “https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/apricot pgadmin4 Release” 没有 Release 文件。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
(base) sam@sam-PC:~$ 

解决,修改 /etc/apt/sources.list.d/pgadmin4.list,

sudo vim /etc/apt/sources.list.d/pgadmin4.list

# 添加
deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/noble pgadmin4 main
sudo apt update
sudo apt install pgadmin4-web

当前 Pgsql 版本不兼容 pgadmin4,只能换个方式安装,

2.2.2、使用 pip 安装 pgadmin4

$ sudo mkdir /var/lib/pgadmin
$ sudo mkdir /var/log/pgadmin
$ sudo chown $USER /var/lib/pgadmin
$ sudo chown $USER /var/log/pgadmin
# 创建 pgadmin4 python 环境
$ python3 -m venv pgadmin4
$ source pgadmin4/bin/activate
# 安装 pgadmin4
(pgadmin4) $ pip install pgadmin4
...
(pgadmin4) $ pgadmin4
NOTE: Configuring authentication for SERVER mode.

Enter the email address and password to use for the initial pgAdmin user account:

Email address: user@domain.com
Password: 
Retype password:
Starting pgAdmin 4. Please navigate to http://127.0.0.1:5050 in your browser.
 * Serving Flask app "pgadmin" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off

Conda 环境也可以,

# 配置路径
(myenv3.8) sam@sam-PC:~/anaconda3/envs/myenv3.8/lib/python3.8/site-packages/pgadmin4$ ls
babel.cfg          branding.py  config_distro.py  DEPENDENCIES  jest.config.js  migrations    pgacloud  pgAdmin4.py    __pycache__  sbom.json  version.py         webpack.shim.js
babel.config.json  commit_hash  config.py         docs          LICENSE         package.json  pgadmin   pgAdmin4.wsgi  README.md    setup.py   webpack.config.js  yarn.lock
(myenv3.8) sam@sam-PC:~/anaconda3/envs/myenv3.8/lib/python3.8/site-packages/pgadmin4$ 

http://127.0.0.1:5050/browser/

配置 postgres 账号密码,然后创建一个新的 Servers 连接,

# psql
ALTER USER postgres WITH PASSWORD 'your_password';

配置 pgAdmin4 账号密码,登录,

2.3、语法提示

3、数据库迁移工具 pgloader

官网文档 https://pgloader.readthedocs.io/en/latest/install.html

一个著名的开源工具,它使用COPY命令将其他数据库中的数据导入PostgreSQL,加载数据、索引和外键,并按预期将数据转换为PostgreSQL。

  1. pgloader 将来自 MS SQL、SQLite、MySQL、CSV 等各种来源的数据加载到 PostgreSQL 中。

  2. 它在 PostgreSQL 许可下获得许可,可以免费使用。

  3. pgloader 是一个跨平台的软件。

  4. Docker 镜像可用。

注意事项,工具在 Windows 上的支持并不完善,最好使用 Linux 操作系统,


http://www.kler.cn/a/541776.html

相关文章:

  • 点大商城V2-2.6.6源码全开源uniapp +搭建教程
  • 第433场周赛:变长子数组求和、最多 K 个元素的子序列的最值之和、粉刷房子 Ⅳ、最多 K 个元素的子数组的最值之和
  • VSCode 下载与使用教程:附百度网盘地址
  • 非递减子序列(力扣491)
  • Java 中 ArrayList 和 LinkedList 有什么区别?
  • 【Ubuntu】安装和使用Ollama的报错处理集合
  • Docker使用指南与Dockerfile文件详解:从入门到实战
  • DeepSeek与GPT大语言模型教程
  • 2/11QT
  • DeepSeek有什么技术创新?为什么这么火
  • 组合模式 + 访问者模式:树形结构与复杂操作的最佳拍档
  • 【算法学习】拓扑排序(Topological Sorting)
  • bazel 小白理解
  • 鸿蒙开发WebUrl跳转到手机浏览器
  • 第五篇:运放的“架构师”——BMS信号链中的虚短虚断法则
  • SwiftUI 中 .overlay 两种写法的区别及拓展
  • java和vue开发的图书馆借阅管理系统小程序
  • 在服务器部署JVM后,如何评估JVM的工作能力,比如吞吐量
  • 神经网络常见激活函数 8-SELU函数
  • 《easy3d与vtk数据类型相互转换》
  • vue3+ts+vite+element plus设置日期时间禁止选择小于当前时间精确到时分秒
  • 网络安全网格架构(CSMA) 网络安全框架csf
  • HTML全局属性与Meta元信息详解:优化网页的灵魂
  • DeepSeek-R1的蒸馏
  • 网络安全检查漏洞内容回复 网络安全的漏洞
  • Halcon.Net与Numpy、OpenCV联合编程