PostgreSQL数据库——Docker版本的postgres安装 & Navicat连接方式+导入向导使用 & SpringBoot结合Jpa使用PostgreSQL初步
作者:mmseoamin日期:2023-12-11

目录

  • 引出
  • postgres数据库
    • Docker版本的postgres安装
    • 运行创建容器
    • Navicat连接数据库
      • 新建数据库
      • 新建模式
      • 导入向导
      • SpringBoot结合Jpa使用postgres初步
        • 导入依赖
        • 创建实体类
        • dao根据区域模糊查询
        • 配置类
          • 使用其他模式
          • 进行测试
          • 总结

            引出


            1.PostgreSQL数据库初始,开源;

            2.Docker版本的postgres安装,以及挂载启动;

            3.Navicat连接方式+导入向导使用,导入csv文件;

            4.SpringBoot结合Jpa使用PostgreSQL初步;

            postgres数据库

            PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是关于PostgreSQL的一些介绍:

            开源性:PostgreSQL是一个开源项目,可以免费使用和修改。它的源代码可以被任何人查看、修改和贡献。

            关系型数据库:PostgreSQL是一种关系型数据库,它使用表格来存储和组织数据。它支持SQL查询语言,可以进行复杂的数据操作和查询。

            可扩展性:PostgreSQL具有良好的可扩展性,可以处理大量的数据和高并发访问。它支持水平扩展和垂直扩展,可以通过添加更多的服务器节点或增加硬件资源来提高性能。

            可靠性:PostgreSQL具有高度可靠性和数据完整性。它支持事务处理和ACID(原子性、一致性、隔离性和持久性)特性,可以确保数据的一致性和可靠性。

            功能丰富:PostgreSQL提供了许多高级功能,如复杂查询、索引、触发器、视图、存储过程、外键约束等。它还支持全文搜索、地理空间数据处理、JSON数据类型等先进的功能。

            跨平台性:PostgreSQL可以在多种操作系统上运行,包括Windows、Linux、Mac OS等。

            在这里插入图片描述

            Docker版本的postgres安装

            docker search postgres

            在这里插入图片描述

            docker pull postgres

            在这里插入图片描述

            运行创建容器

            docker run -it \
            --name postgres \
            --privileged \
            -e POSTGRES_PASSWORD=123 \
            -p 5432:5432 \
            -v /usr/local/software/postgres/data:/var/lib/postgresql/data \
            -d postgres
            
            docker run --name postgres -e POSTGRES_PASSWORD=Abc1234% -p 5432:5432 -v /home/zx/postgres/data:/var/lib/postgresql/data -d postgres
            
            • –name postgres:指定容器的名称;
            • -e POSTGRES_PASSWORD=Abc1234%:设置环境变量,这里为设定PostgreSQL数据库的密码;
            • -p 5432:5432:指定端口映射,前者为宿主机访问端口,后者为容器内端口。如果不指定端口映射,只有在容器内可以访问数据库,外部是无法访问的;
            • -v /home/zx/postgres/data:/var/lib/postgresql/data:v是volume的简写,即绑定一个卷,冒号前的路径为宿主机的路径(如果指定路径不存在会自动创建目录),冒号后为容器内路径。容器会把宿主机的目录映射到容器内的路径,这样容器运行中生成的数据实际上就是写到了宿主机的指定路径上,即使容器删除了,此路径的文件也不会删除,这样就做到了数据库的持久化存储。还可以通过docker volume提供的相关命令显式地创建volume,然后再挂载到容器上,这里不做介绍,请自行查询相关内容;
            • -d:表示后台运行容器;
            • postgres:表示镜像的名称,docker基于上步拉取的镜像创建出容器;

              在这里插入图片描述

              查看日志

              docker logs postgres

              在这里插入图片描述

              容器内连接数据库

              docker exec -it postgres /bin/bash
              
              • exec:在容器中运行命令
              • postgres:为容器名称
              • -it:表示在当前终端为容器分配一个伪终端
              • /bin/bash:容器内运行/bin/bash终端

                在这里插入图片描述

                [root@localhost data]# docker exec -it postgres bash
                root@3283f4dbe299:/# su postgres
                postgres@3283f4dbe299:/$ psql
                psql (14.1 (Debian 14.1-1.pgdg110+1))
                Type "help" for help.
                postgres=# \l
                                                 List of databases
                   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
                -----------+----------+----------+------------+------------+-----------------------
                 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
                 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                           |          |          |            |            | postgres=CTc/postgres
                 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                           |          |          |            |            | postgres=CTc/postgres
                (3 rows)
                postgres=# 
                

                Navicat连接数据库

                创建连接

                在这里插入图片描述

                在这里插入图片描述

                新建数据库

                在这里插入图片描述

                编码方式UTF-8

                在这里插入图片描述

                新建模式

                在这里插入图片描述

                输入模式名

                在这里插入图片描述

                导入向导

                在这里插入图片描述

                选择csv文件

                在这里插入图片描述

                在这里插入图片描述

                在这里插入图片描述

                LF (Line Feed):换行符,’\n’,表示切换到下一行,ASCII码为10

                CR (Carriage Return):回车符,’\r’,表示回到当前行的开头,ASCII码为13

                CRLF:一个回车符和一个换行符,“\r\n”

                • Windows系统 使用 CRLF 进行换行
                • Unix系统 及 类Unix系统 采用 LF 进行换行

                  关于分隔符

                  在这里插入图片描述

                  日期排序方式

                  在这里插入图片描述

                  支持修改表名

                  在这里插入图片描述

                  选择字段,修改导入后字段名字

                  在这里插入图片描述

                  导入模式

                  在这里插入图片描述

                  开始导入

                  在这里插入图片描述

                  在这里插入图片描述

                  SpringBoot结合Jpa使用postgres初步

                  在这里插入图片描述

                  导入依赖

                  
                          
                              org.springframework.boot
                              spring-boot-starter-data-jpa
                          
                  
                          
                              org.postgresql
                              postgresql
                              runtime
                          
                  

                  创建实体类

                  javax

                  • @Entity

                    @Table

                    • @Id
                    • @GeneratedValue(strategy) AUTO/IDENTITY(数据库自己的主键自增长策略???)
                    • @Column

                      GenerationType.AUTO:会多一张表,记录键

                      GenerationType.IDENTITY:用数据库自增的主键

                      @GeneratedValue(strategy = GenerationType.IDENTITY) // 用数据库自增长策略

                      在这里插入图片描述

                      package com.tianju.book.jpa;
                      import lombok.AllArgsConstructor;
                      import lombok.Data;
                      import lombok.NoArgsConstructor;
                      import javax.persistence.*;
                      @Data
                      @NoArgsConstructor
                      @AllArgsConstructor
                      // 表示这个实体类是和数据库表对应的
                      @Entity
                      @Table(name = "identity_card") // 对应的表名
                      public class Identity {
                          @Id // 是主键
                          // GenerationType.AUTO:会多一张表,记录键
                          // GenerationType.IDENTITY:用数据库自增的主键
                          @GeneratedValue(strategy = GenerationType.IDENTITY) // 用数据库自增长策略
                          @Column(name = "id")
                          private String id;
                          @Column(name = "distinct")
                          private String distinct;
                      }
                      

                      dao根据区域模糊查询

                      JpaRepository:实体类以及主键的类型

                      在这里插入图片描述

                      package com.tianju.book.jpa;
                      import org.springframework.data.jpa.repository.JpaRepository;
                      import org.springframework.stereotype.Repository;
                      import java.util.List;
                      /**
                       * JpaRepository:实体类以及主键的类型
                       */
                      @Repository
                      public interface IdentityDao extends JpaRepository {
                          List findByDistinctLike(String distinct);
                      }
                      

                      配置类

                      在jpa中,ddl-auto共分为四种:

                      spring.jpa.hibernate.ddl-auto = create ----每次启动SpringBoot程序时,没有表会新建表格,表内有数据会清空;

                      spring.jpa.hibernate.ddl-auto = create-drop ----每次启动SpringBoot程序时,会清空表数据;

                      spring.jpa.hibernate.ddl-auto = update ---- 每次启动SpringBoot程序时,没有表格会新建表格,表内有数据不会清空,只会更新;

                      spring.jpa.hibernate.ddl-auto = validate ---- 每次启动SpringBoot程序时,会校验实体类字段与数据库字段的类型是否相同,不同则会报错;

                      在这里插入图片描述

                      server:
                        port: 9099
                      spring:
                        datasource:
                          driver-class-name: org.postgresql.Driver
                          url: jdbc:postgresql://192.168.111.130:5432/test-db?useSSL=false
                          username: postgres
                          password: 123
                        jpa:
                          # 允许显示sql
                          show-sql: true
                          hibernate:
                            # 自动对表进行增删改查的操作,创建表
                            # 可以开始的时候打开,等表创建好之后关闭
                            ddl-auto: validate
                      

                      使用其他模式

                      在这里插入图片描述

                      在Spring Boot的application.yml文件中,可以使用以下方式指定连接PostgreSQL数据库中的模式:

                      spring:
                        datasource:
                          url: jdbc:postgresql://localhost:5432/database_name?currentSchema=schema_name
                          username: your_username
                          password: your_password
                      

                      在上述配置中,database_name是要连接的数据库名称,schema_name是要使用的模式名称。通过在URL中添加currentSchema=schema_name参数,可以指定要使用的模式。

                      另外,如果要在代码中指定模式,可以使用spring.jpa.properties.hibernate.default_schema属性,如下所示:

                      spring:
                        jpa:
                          properties:
                            hibernate:
                              default_schema: schema_name
                      

                      这样,Hibernate将使用指定的模式来创建和查询数据库对象。

                      进行测试

                      在这里插入图片描述

                      package com.tianju.book.mapper;
                      import com.tianju.book.jpa.Identity;
                      import com.tianju.book.jpa.IdentityDao;
                      import org.junit.Test;
                      import org.junit.runner.RunWith;
                      import org.springframework.beans.factory.annotation.Autowired;
                      import org.springframework.boot.test.context.SpringBootTest;
                      import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
                      import java.util.List;
                      @SpringBootTest
                      @RunWith(SpringJUnit4ClassRunner.class)
                      public class JpaDemoTest {
                          @Autowired
                          private IdentityDao identityDao;
                          @Test
                          public void findByDistinctLike(){
                              List distinctLike = identityDao.findByDistinctLike("北京%");
                              distinctLike.forEach(identity->{
                                  System.out.println(identity);
                              });
                          }
                      }
                      

                      总结

                      1.PostgreSQL数据库初始,开源;

                      2.Docker版本的postgres安装,以及挂载启动;

                      3.Navicat连接方式+导入向导使用,导入csv文件;

                      4.SpringBoot结合Jpa使用PostgreSQL初步;