【PostgreSQL】安装及使用(Navicat/Arcgis),连接(C#)

简介

PostgreSQL 是一个功能强大的开源对象关系数据库系统

下载地址

PostgreSQL: Downloads

由于我电脑上安装的是arcgispro3.1所以需要下载对应的postgresql版本

PostgreSQL 12 对应的 PostGIS 版本主要是 3.5.0 或更高版本。

安装

一般设置为postgresql

安装扩展插件

此处就是告诉你是否需要下载额外的插件

扩展的详情介绍请查看

【PostgreSQL】扩展插件介绍-CSDN博客

我选择npsql是因为我需要用.net连接数据库

而且下边也有介绍

PostgreSQL的。net数据提供程序。由EnterpriseDB打包。

选择postgis是应为需要连接arcgis/geoscene/qgis,将空间数据进行上传到数据库

PostGIS"在空间上启用"PostgreSQL服务器,允许它被用作地理信息系统(GIS)的后端空间数据库。

等待下载

下载完成

安装.net数据库驱动

完成扩展

安装PostGis扩展

此处输入的是PostgreSQl数据库的密码postgresql

设置空间数据库的名称

安装

安装完成

扩展全部安装完成

操作

连接postgresql

创建数据库

连接

创建空间数据库

创建成功,有tiger和tiger_data和topolpgy说明创建的是带有空间属性的数据库

在PostgreSQL中创建数据库时,确实会自动创建一个名为public的模式。这个模式是每个新数据库默认包含的,无论用户是否指定模式名称,PostgreSQL都会将其放入public模式中。

在PostgreSQL数据库中,"tiger"和"tigerdata"以及"topology"模式分别有其特定的用途和背景。

TIGER(Topologically Integrated Geographic Encoding and Referencing)是一个由美国人口普查局开发的地理编码系统。它是一个数字化(计算机可读)的地理数据库,用于支持人口普查和调查程序中的地图制作及相关地理活动。TIGER 数据库的内容通过各种"TIGER 提取"文件提供给公众,并且不断更新。

在PostGIS中,可以生成一个shell脚本,用于下载TIGER数据并将其暂存到名为tiger_data的模式中。每个州的脚本都会作为单独的记录返回。这表明tiger_data模式是专门用来存储从TIGER数据库中提取的数据的逻辑层面数据集合。

PostgreSQL中的topology模式包含用于创建拓扑结构的函数及拓扑目录表。如果该模式不存在,则说明尚未安装相关的扩展。拓扑结构在地理信息系统(GIS)中非常重要,用于描述空间对象之间的拓扑关系。

综上所述,tigertiger_data模式主要用于处理和存储与地理信息相关的数据,而topology模式则用于构建和管理复杂的拓扑结构。这些模式在PostgreSQL数据库中扮演着重要的角色,特别是在地理空间数据分析和处理中。

表空间介绍

表空间可以分为系统表空间和非系统表空间。系统表空间如SYSTEMSYSAUX用于存储系统数据,而非系统表空间用于存储用户数据。

在PostgreSQL中,表空间实际上是为表指定一个存储目录。创建表空间时可以指定存储位置,并在创建数据库时指定默认的表空间。

在PostgreSQL中,可以通过创建不同的表空间来管理不同类型的数据。

在PostgreSQL中,pg_globalpg_default是两个默认的表空间,它们在数据库初始化时自动创建。以下是它们的详细描述:

  1. pg_global

    • pg_global表空间用于存储共享的系统目录对象。这些对象是所有数据库共享的系统表,例如pg_databasepg_authid等。
    • 它的物理文件位置通常在数据目录的global目录中。
    • pg_global表空间是全局的,适用于所有数据库。
  2. pg_default

    • pg_default表空间是默认的表空间,用于存储用户创建的对象,如用户表、用户表索引、临时表、临时表索引等。
    • 它是template1template0数据库的默认表空间,因此也是其他数据库的默认表空间,除非在创建数据库时通过TABLESPACE子句指定其他表空间。
    • 它的物理文件位置通常在数据目录的base目录中。
    • pg_default表空间是每个数据库的默认存储位置,除非用户明确指定其他表空间。

总结来说,**pg_global主要用于存储系统级的共享数据,而pg_default则是用户数据和默认对象的存储位置。**这两个表空间在PostgreSQL的体系结构中扮演着关键角色,确保了系统数据和用户数据的分离与管理。

使用ArcGIS/GeoScenePro连接

配置

arcgispro路径

复制代码
D:\Program Files\GeoScene\Pro\Resources\DatabaseSupport\GeoScenePro_41_ST_Geometry\PostgreSQL\12

postgresql路径

复制代码
D:\Program Files\PostgreSQL\12\lib

创建企业级地理数据

授权文件地址

复制代码
C:\Program Files\ESRI\License11.1\sysgen

连接

连接成功

使用C#连接数据库

代码

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Npgsql;

namespace ConnectDatabase
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 连接字符串,包含了数据库的位置,用户名和密码
            string connString = "Host=localhost;Username=postgres;Password=postgresql;Database=GeoData";

            // 使用using语句确保连接会被正确关闭和释放
            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                // 创建一个SQL查询
                string sql = "SELECT version()";

                using (var cmd = new NpgsqlCommand(sql, conn))
                {
                    // 执行查询并读取结果
                    var version = cmd.ExecuteScalar();
                    Console.WriteLine($"PostgreSQL version: {version}");
                }
            }
            Console.ReadKey();
        }
    }
}

连接成功

参考文档

PostgreSQL关系型数据库安装教程 (qq.com)

数据库连接时的表空间 (metaso.cn)

pg_global 和 pg_default (metaso.cn)

相关推荐
Kethy__20 分钟前
计算机中级-数据库系统工程师-计算机体系结构与存储系统
大数据·数据库·数据库系统工程师·计算机中级
SHoM SSER23 分钟前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
熬夜的咕噜猫1 小时前
MySQL备份与恢复
数据库·oracle
jnrjian1 小时前
recover database using backup controlfile until cancel 假recover,真一致
数据库·oracle
lifewange2 小时前
java连接Mysql数据库
java·数据库·mysql
大妮哟2 小时前
postgresql数据库日志量异常原因排查
数据库·postgresql·oracle
还是做不到嘛\.3 小时前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
不写八个3 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php
Dylan~~~3 小时前
深度解析Cassandra:分布式数据库的王者之路
数据库·分布式
荒川之神4 小时前
Oracle HR 模式递归函数练习(基于 employees 表)
数据库·oracle