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 操作系统,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968600.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设备智能化无线通信,ESP32-C2物联网方案,小尺寸芯片实现大功能

在科技飞速发展的当下,我们的生活正被各类智能设备悄然改变,它们如同一位位无声的助手,渗透到我们生活的每一个角落,让生活变得更加便捷和丰富多彩。 智能插座、智能照明和简单家电设备在家居领域的应用,为我们的生活…

Unity 编辑器热更C# FastScriptReload

工具源码:https://github.com/handzlikchris/FastScriptReload 介绍 用于运行时修改C#后能快速重新编译C#并生效,避免每次改C#,unity全部代码重新编译,耗时旧且需要重启游戏。 使用 需要手动调整AssetPipeline自动刷新模式&…

kbengine服务器和 数据库 系统路径配置

一、服务器 系统路径配置 二、mysql5.7.44 系统路径配置 mysql 压缩包安装方式 解压压缩包,将解压路径加入 系统环境。 或者 系统变量新增 变量名:MYSQL_HOME 变量值:C:\MyPrograms\mysql-8.0.12-winx64修改系统变量的 path 变量&#xff…

AI代码生成器如何重塑前端开发的工作环境

近年来,人工智能(AI)技术迅猛发展,深刻地改变着各行各业的工作方式。在软件开发领域,AI写代码工具的出现更是掀起了一场革命,尤其对前端开发工程师的工作环境和协作方式产生了深远的影响。本文将深入探讨AI…

前端可以不用依赖后端实现导出大数据了

theme: channing-cyan hightlight: channing-cyan 前言 在我们公司表格数据导出都是前端去处理。一开始数据量不大,倒没什么问题。但随着数据量的加大,问题也逐渐暴露出来。 一天的数据量有一来万条,导出一定时间范围的数据,30…

本地部署DeepSeek Nodejs版

目录 1.下载 Ollama 2.下载DeepSeek模型 3.下载 ollama.js 1.下载 Ollama https://ollama.com/ 下载之后点击安装,等待安装成功后,打开cmd窗口,输入以下指令: ollama -v 如果显示了版本号,则代表已经下载成功了。…

C++ Primer 迭代语句

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

你需要提供管理员权限才能删除此文件夹解决方法

立即高级启动 windows10 搜索“设置”,然后“更新和安全””->“恢复”->“立即重新启动” windows11 搜索“设置”,然后“Windows更新”->“更新历史记录”->“恢复”->“立即重新启动” 疑难解答 点击“疑难解答” 高级选项 启…

408-数据结构

数据结构在学什么? 1.用代码把问题信息化 2.用计算机处理信息 ch1 数据:数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 ch2 //假设线性表…

神经网络常见激活函数 9-CELU函数

文章目录 CELU函数导函数函数和导函数图像优缺点pytorch中的CELU函数tensorflow 中的CELU函数 CELU 连续可微指数线性单元:CELU(Continuously Differentiable Exponential Linear Unit),是一种连续可导的激活函数,结合了 ELU 和 …

Ceph集群搭建2025(squid版)

squid版本维护年限 apt install -y cephadmecho >> "deb http://mirrors.163.com/ceph/debian-squid/ bookworm main" echo >> "deb-src http://mirrors.163.com/ceph/debian-squid/ bookworm main"#安装源 cephadm install #开始初始化一个最…

详解电子邮箱工作原理|SMTP、POP3、IMAP、SPF、MIME

写在前面 电子邮件(Email)是一种通过互联网进行异步通信的技术,工作原理涉及多个协议、服务器和客户端协同工作。 接下来我们来介绍一下电子邮箱的工作原理 1. 电子邮件的核心组成部分 邮件客户端:用户直接交互的软件&#xf…

【安全靶场】信息收集靶场

靶场:https://app.hackinghub.io/hubs/prison-hack 信息收集 子域名收集 1.subfinder files.jabprisons.com staging.jabprisons.com cobrowse.jabprisons.com a1.top.jabprisons.com cf1.jabprisons.com va.cobrowse.jabprisons.com vs.jabprisons.com c…

LVDS接口总结--(5)IDELAY3仿真

仿真参考资料如下: https://zhuanlan.zhihu.com/p/386057087 timescale 1 ns/1 ps module tb_idelay3_ctrl();parameter REF_CLK 2.5 ; // 400MHzparameter DIN_CLK 3.3 ; // 300MHzreg ref_clk ;reg …

DeepSeek的大模型介绍

文章目录 DeepSeek是什么DeepSeek平台使用DeepSeek的使用场景DeepSeek的本地部署 DeepSeek是什么 DeepSeek是一家2023/7月年成立的人工智能公司,致力于开发高效、高性能的生成式AI模型,在短短一年多的时间里推出了多款强大的开源模型,包括De…

【devops】Github Actions Secrets | 如何在Github中设置CI的Secret供CI的yaml使用

一、Github Actions 1、ci.yml name: CIon: [ push ]jobs:build:runs-on: ubuntu-lateststeps:- name: Checkout codeuses: actions/checkoutv3- name: Set up Gouses: actions/setup-gov4with:go-version: 1.23.0- name: Cache Go modulesuses: actions/cachev3with:path: |…

C语言基本概念————讨论sqrt()和pow()函数与整数的关系

本文来源:C语言基本概念——讨论sqrt()和pow()函数与整数的关系. C语言基本概念——sqrt和pow函数与整数的关系 1. 使用sqrt()是否可以得到完全平方数的精确的整数平方根1.1 完全平方数的计算结果是否精确?1.2 为什么不会出现误差(如 1.99999…

日常知识点之面试后反思裸写string类

1:实现一个字符串类。 简单汇总 最简单的方案,使用一个字符串指针,以及实际字符串长度即可。 参考stl的实现,为了提升string的性能,实际上单纯的字符串指针和实际长度是不够了,如上,有优化方案…

【AI论文】10亿参数大语言模型能超越405亿参数大语言模型吗?重新思考测试时计算最优缩放

摘要:测试时缩放(Test-Time Scaling,TTS)是一种通过在推理阶段使用额外计算来提高大语言模型(LLMs)性能的重要方法。然而,目前的研究并未系统地分析策略模型、过程奖励模型(Process …

【漫话机器学习系列】088.常见的输出层激活函数(Common Output Layer Activation Functions)

在神经网络中,输出层(Output Layer) 的激活函数(Activation Function)直接决定了模型的输出形式,并影响损失函数的选择及训练效果。不同的任务类型(如分类或回归)需要使用不同的激活…