Xavier's Blog

做更美好的自己

PostgreSQL

PostgreSQL

PostgreSQL 数据库

拉取镜像

docker pull postgres:

新建并启动 PostgreSQL 容器

docker run –name -e POSTGRES_PASSWORD= -p hostPort:containerPort -d postgres:

docker run –name iot-pq -e POSTGRES_PASSWORD=iot -p 5432:5432 -d postgres

–name 指定容器名称。
-e 指定环境变量,POSTGRES_PASSWORD 是 postgres 的数据库密码。
-p 指定宿主机和 Docker 容器端口映射,冒号前为宿主机端口号,另一个是容器端口号。
-d 指明容易后台运行。

进入容器

psql 命令可以进入数据库客户端连接数据库服务端并进行操作。
PostgreSQL 数据库常用操作可参考 PostgreSQL 数据库常用操作。
-h 指明数据库 IP 地址。
-U 指定登录数据库用户。

docker exec -it psql -h -U postgres

docker exec -it 15df572789f6 psql -h localhost -U postgres

createdb和dropdb创建、删除数据库

切换到pg用户
su - pg
创建数据库mydb
createdb mydb
删除数据库mydb
dropdb mydb

createdb和dropdb可以指定主机,用户名,密码等参数,用于连接PostgreSQL服务器,以上示例没有指定,默认使用操作系统当前用户pg,而pg用户也是启动数据库服务的用户,因此有权限创建和删除数据库。

创建用户及数据库

postgres=# CREATE USER iot WITH PASSWORD 'iot';
CREATE ROLE
postgres=# CREATE DATABASE iot OWNER iot;
CREATE DATABASE

远程登录,远程登录配置参照:linux下postgresql远程登录

 psql -hx.x.x.x -p5432 -W    #登录命令
 enter password

导出表结构

select table_name, column_name,
    case data_type
        when 'character varying' then data_type || '(' || character_maximum_length || ')'
        when 'numeric' then data_type || '(' || numeric_precision || ',' || numeric_scale || ')'
        else data_type
    end as data_type,
    case is_nullable
        when 'NO' then 'NOT NULL'
        else ''
    end as is_nullable
from information_schema.columns
where table_schema='public'
order by table_name, ordinal_position;