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 Release404  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: productionWARNING: 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.mzph.cn/diannao/69940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025前端面试题

2025前端面试题 uniappuniapp如何打包发版到线上 vuevue3构建项目vue如何封装组件vue2的响应式原理vue3的响应式原理vue3和2的区别Vuex中的重要核心属性有哪些?Vue-router有哪几种路由守卫 es6数组有哪些常用方法ES6的新特性Promiseasync/await防抖和节流&#xff0…

大语言模型多代理协作(MACNET)

大语言模型多代理协作(MACNET) Scaling Large-Language-Model-based Multi-Agent Collaboration 提出多智能体协作网络(MACNET),以探究多智能体协作中增加智能体数量是否存在类似神经缩放定律的规律。研究发现了小世界协作现象和协作缩放定律,为LLM系统资源预测和优化…

dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型

要将 dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型. 申请阿里云百练的KEY 添加模型 测试模型

Win10环境使用Dockerdesktop部署Dify集成Deepseek

Win10环境借助Dockerdesktop部署Dify集成Deepseek 前言 之前笔者已经部署了基于Ollama的Deepseek: https://lizhiyong.blog.csdn.net/article/details/145505686 安装官方指示,还可以集成很多组件拓展玩法: https://github.com/deepseek…

23、深度学习-自学之路-激活函数relu、tanh、sigmoid、softmax函数的正向传播和反向梯度。

在使用这个非线性激活函数的时候,其实我们重点还是学习的是他们的正向怎么传播,以及反向怎么传递的。 如下图所示: 第一:relu函数的正向传播函数是:当输入值(隐藏层)值大于了,就输出…

cameralib 安装

目录 linux安装: 测试安装是否成功: linux安装: pip install githttps://github.com/isarandi/cameralib.git pip install githttps://github.com/isarandi/boxlib.git pip install githttps://github.com/isarandi/poseviz.git githttps…

ML.NET库学习005:基于机器学习的客户细分实现与解析

文章目录 ML.NET库学习005:基于机器学习的客户细分实现与解析项目主要目的和原理目的原理 项目概述实现的主要功能主要流程步骤使用的主要函数方法关键技术 主要功能和步骤功能详细解读详细步骤解析 数据集及其处理步骤数据集处理步骤关键处理步骤原理1. 数据清洗与…

webpack打包优化策略

1. 减少打包体积 减少打包文件的大小是为了提高加载速度,降低网络带宽消耗,提升用户体验。常见的减少打包体积的优化策略包括: 代码分割(Code Splitting):将代码拆分成多个小文件,让浏览器按需…

RocketMQ与kafka如何解决消息积压问题?

前言 消息积压问题简单来说,就是MQ存在了大量没法快速消费完的数据,造成消息积压的原因主要在于“进入的多,消费的少”,或者生产的速度过快,而消费速度赶不上,基于这一问题,我们主要介绍如何通过…

RISC-V平台编译 state-thread x264 ffmpeg zlog

1.state-threads 源码下来之后 直接 make linux-debug 目录下生成了对应的.a 和 .h文件 gcc test.c -o test -l st -L . #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/socket.h&g…

用easyExcel如何实现?

要使提供的 ExcelModelListener 类来解析 Excel 文件并实现批量存储数据库的功能&#xff0c;需要结合 EasyExcel 库来读取 Excel 数据。具体来说&#xff0c;可以使用 EasyExcel.read() 方法来读取 Excel 文件&#xff0c;并指定 ExcelModelListener 作为事件监听器。 下面是…

BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234【代码审计/序列化/RCE】

Hint1&#xff1a;本题的 flag 不在环境变量中 Hint2&#xff1a;session_start&#xff08;&#xff09;&#xff0c;注意链子挖掘 题目&#xff1a; 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…

Mysql中使用sql语句生成雪花算法Id

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

Go框架面试突击!30道高频题解析

前言 有粉丝朋友问我能不能整理Go主流框架方面的面试题&#xff0c;安排&#xff01; 这篇文章分享了gRPC、GoFrame、GoZero、GoMicro、GORM、Gin等主流框架的30道面试题和详解。 需要大厂面经的朋友们也可以直接加我好友&#xff0c;私信我。 gRPC 1.gRPC是什么&#xff…

@JsonRawValue 注解

这里写目录标题 1. 问题2. JsonRawValue 注解说明 1. 问题 在实际开发中我遇到这样一个问题&#xff0c;查询数据库的结果返回的content内容是含有转移符的JSON字符串&#xff0c;但是我需要返回的不包含转移的String字符串。经过我一顿折腾并未发现解决办法&#xff0c;直到J…

node.js+兰空图床实现随机图

之前博客一直用的公共的随机图API&#xff0c;虽然图片的质量都挺不错的&#xff0c;但是稳定性都比较一般&#xff0c;遂打算使用之前部署的兰空图床&#xff0c;自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作&#xff0c;有兴趣的话可…

MySQL binlog的三种模式

MySQL 的 binlog&#xff08;Binary Log&#xff09; 默认的模式是 STATEMENT&#xff0c;即 语句模式。在这种模式下&#xff0c;MySQL 会记录所有对数据库执行的数据修改操作&#xff08;如 INSERT、UPDATE、DELETE 等&#xff09;的 SQL 语句。 1. binlog 的三种模式 MySQL…

25农村发展研究生复试面试问题汇总 农村发展专业知识问题很全! 农村发展复试全流程攻略 农村发展考研复试真题汇总

农村发展复试当然有好的建议&#xff01;前提是复试重点面试题背好&#xff01; 你是不是也在为农村发展考研复试发愁&#xff1f;担心自己准备不充分、表现不好&#xff1f;别急&#xff01;今天&#xff0c;学姐——复试面试拿下90分成功上岸的学姐&#xff0c;来给大家分享…

读取本地excel并生成map,key为第一列,value为第二列

添加依赖&#xff1a;在 pom.xml 文件中添加以下依赖&#xff1a; <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency&…

代码随想录算法【Day44】

Day44 1143.最长公共子序列 class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size() 1, vector<int>(text2.size() 1, 0));for (int i 1; i < text1.size(); i) {for (int j 1; …