数据库安装postgresql
数据库安装postgresql
1.数据库源替换下载
sed -i "s|\$releasever|8-stream|g" /etc/yum.repos.d/CentOS-*.repo
yum makecache
yum install -y postgresql postgresql-server
systemctl start postgresql
systemctl enable postgresql
systemctl status postgresql
1.1 安装最新版psql
1.检查当前已安装的PostgreSQL版本:
yum list installed | grep postgresql
2.确定要安装的新版本。您可以在PostgreSQL的官方网站或存储库中找到可用的版本信息。
3.移除旧版本的PostgreSQL:
yum remove postgresql-server
4.添加新版本的PostgreSQL存储库。根据您的操作系统和所选的PostgreSQL版本,可能会有不同的存储库和命令。下面是一个示例命令,用于添加官方的PostgreSQL存储库(以CentOS 7为例):
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
5.更新yum缓存:
yum makecache
6.安装新版本的PostgreSQL:
yum install -y postgresql-server
7.初始化和配置新安装的PostgreSQL:
/usr/bin/postgresql-setup initdb
8.启动PostgreSQL服务:
systemctl start postgresql
9.确保PostgreSQL服务在系统启动时自动启动:
systemctl enable postgresql
2.初始化数据库并启动安装
#找到初始化目录
find / -name "postgresql-setup"
/usr/bin/postgresql-setup initdb
#启动安装 设置开机自启动
systemctl start postgresql.service
systemctl enable postgresql.service
systemctl status postgresql
一定要关闭防火墙systemctl disabled firewalld.service
或者设置防火墙规则 5432
3.登录数据库设置密码
登录数据库:su postgres //切换账号
然后输入psql
登陆成功!可进行数据库的操作
查看有哪些数据库:\l
退出数据库:\q
切换到root 用户:su root 密码:Admin123@
#### 172.30.3.11/172.30.3.18 数据库 用户 :esg 密码:esg1346852
# 导出数据库的表成CSV格式的文件;导出来字符有问题可以用notepad++转换
psql -h 172.30.3.11 -p 5432 -d esg -U esg -c "\copy company_pollution_clean to './company_pollution_clean.csv' WITH csv header delimiter ',' encoding 'UTF8'";
pg_dump -h 172.30.3.11 -p 5432 -U esg -t news -f news.sql esg
-U 用户名 -t 表名 最后 库名 -f 导出的文件
1.基本命令:
createdb 创建一个新的PostgreSQL的数据库(命令可以使用大写)
createuser 创建一个新的PostgreSQL的用户
dropdb 删除数据库
dropuser 删除用户
pg_dump 将PostgreSQL数据库导出到一个脚本文件
pg_dumpall 将所有的PostgreSQL数据库导出到一个脚本文件
pg_restore 从一个由pg_dump或pg_dumpall程序导出的脚本文件中恢复PostgreSQL数据库
psql 一个基于命令行的PostgreSQL交互式客户端程序
vacuumdb 清理和分析一个PostgreSQL数据库,它是客户端程序psql环境下SQL语句VACUUM的shell脚本封装,二者功能完全相同
2. 数据库中的命令:
template1=# \l 查看系统中现存的数据库
template1=# \q 退出客户端程序psql
template1=# \dt 查看表
template1=# \d 查看表结构
template1=# \di 查看索引
template1=# \c 从一个数据库中转到另一个数据库中,如template1=# \c sales 从template1转到sales
3.基本数据库操作
创建数据库: create database [数据库名];
查看数据库列表: \d
删除数据库: . drop database [数据库名];
创建表: create table ([字段名1] [类型1] <references 关联表名(关联的字段名)>;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);
查看表名列表: \d
查看某个表的状况: \d [表名]
重命名表: alter table [表名A] rename to [表名B];
删除表: drop table [表名];
4. 表内基本操作
在已有的表里添加字段: alter table [表名] add column [字段名] [类型];
删除表中的字段: alter table [表名] drop column [字段名];
去除缺省值: alter table [表名] alter column [字段名] drop default;
在表中插入数据: insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
重命名一个字段: alter table [表名] rename column [字段名A] to [字段名B];
给一个字段设置缺省值: alter table [表名] alter column [字段名] set default [新的默认值];
修改表中的某行某列的数据: update [表名] set [目标字段名]=[目标值] where [该行特征];
删除表中某行数据: delete from [表名] where [该行特征];
delete from [表名];--删空整个表
5. 备份数据库
可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:
pg_dump sales>/home/pgsql/backup/myback.bak
4.常用命令
一、常用命令
登录命令:
psql -h IP -p 端口 -U 用户名 -d 数据库名 -W
\? 所有命令帮助
\l 列出所有数据库
\d 列出数据库中所有表
\dt 列出数据库中所有表
\d [table_name] 显示指定表的结构
\di 列出数据库中所有 index
\dv 列出数据库中所有 view
\h sql命令帮助
\q 退出连接
\c [database_name] 切换到指定的数据库
\c 显示当前数据库名称和用户
\conninfo 显示客户端的连接信息
\du 显示所有用户
\dn 显示数据库中的schema
\encoding 显示字符集
select version(); 显示版本信息
\i testdb.sql 执行sql文件
\x 扩展展示结果信息,相当于MySQL的\G
\o /tmp/test.txt 将下一条sql执行结果导入文件中
二、用户
2.1 创建账号
创建用户:
create user 用户名 password '密码';
create user model password 'model147258';
设置只读权限:
alter user 用户名 set default_transaction_read_only = on;
创建数据库:
CREATE DATABASE 数据库;
CREATE DATABASE model;
设置可操作的数据库:
grant all on database 数据库名 to 用户名;
grant all on database model to model;
授权可操作的模式和权限:
-- 授权
grant select on all tables in schema public to 用户名;
-- 授权
GRANT ALL ON TABLE public.user TO mydata;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.user TO mydata_dml;
GRANT SELECT ON TABLE public.user TO mydata_qry;
2.2 删除账号
撤回在public模式下的权限:
revoke select on all tables in schema public from 用户名;
撤回在information_schema模式下的权限:
revoke select on all tables in schema information_schema from 用户名;
撤回在pg_catalog模式下的权限:
revoke select on all tables in schema pg_catalog from 用户名;
撤回对数据库的操作权限:
revoke all on database 数据库名 from 用户名;
删除用户:
drop user 用户名;
三、权限
3.1 授权
设置只读权限:
alter user 用户名 set default_transaction_read_only = on;
设置可操作的数据库:
grant all on database 数据库名 to 用户名;
设置可操作的模式和权限:
grant select,insert,update,delete on all tables in schema public to 用户名;
2.2 撤回权限
撤回在public模式下的权限:
revoke select on all tables in schema public from 用户名;
撤回在information_schema模式下的权限:
revoke select on all tables in schema information_schema from 用户名;
撤回在pg_catalog模式下的权限:
revoke select on all tables in schema pg_catalog from 用户名;
撤回对数据库的操作权限:
revoke all on database 数据库名 from 用户名;
四、模式 Schema
创建和当前用户同名模式(schema):
注意:用户名与 schema 同名,且用户具有访问改 schema 的权限,用户连入数据库时,默认即为当前 schema。
create schema AUTHORIZATION CURRENT_USER;
自定义创建模式(schema):
create schema 模式名称;
注意:如果不创建scheme,并且语句中不写scheme,则默认scheme使用内置的public
查看数据库下的所有(schema):
select * from information_schema.schemata;
五、数据库
查询所有数据库:
select datname from pg_database;
创建数据库:
create database 数据库名 owner 所属用户 encoding UTF8;
create database model owner model encoding UTF8;
注意:创建完数据库,需要切换到数据库下,创建和当前用户同名scheme,删除数据库后schema也会一并删除:
-- 重新登陆到新数据库下,执行如下语句
create schema AUTHORIZATION CURRENT_USER;
删除数据库:
drop database 数据库名;
注意:删库前需要关闭所有会话,不然会提示:
ERROR: database "mydb" is being accessed by other users
DETAIL: There are 8 other sessions using the database.
关闭数据库所有会话:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='mydb' AND pid<>pg_backend_pid();
六、表
查询schema中所有表:
select table_name from information_schema.tables where table_schema = 'myuser';
创建表:
CREATE TABLE public.t_user (
"id" BIGSERIAL NOT NULL,
"username" VARCHAR(64) NOT NULL,
"password" VARCHAR(64) NOT NULL,
"create_time" TIMESTAMP(0) default CURRENT_TIMESTAMP not null,
"update_time" TIMESTAMP(0) default CURRENT_TIMESTAMP not null
);
COMMENT ON TABLE public.t_user IS '用户表';
COMMENT ON COLUMN public.t_user.id IS '主键';
COMMENT ON COLUMN public.t_user.username IS '用户名';
COMMENT ON COLUMN public.t_user.password IS '密码';
COMMENT ON COLUMN public.t_user.create_time IS '创建时间';
COMMENT ON COLUMN public.t_user.update_time IS '更新时间';
-- 注释
-- 创建自增序列
alter sequence "t_user_ID_seq" restart with 1 increment by 1;
-- 创建主键序列
drop index if exists "t_user_pkey";
alter table "t_user" add constraint "t_user_pkey" primary key ("ID");
根据已有表结构创建表:
create table if not exists 新表 (like 旧表 including indexes including comments including defaults);
删除表:
drop table if exists "t_template" cascade;
查询注释:
SELECT
a.attname as "字段名",
col_description(a.attrelid,a.attnum) as "注释",
concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '(.*)')) as "字段类型"
FROM
pg_class as c,
pg_attribute as a,
pg_type as t
WHERE
c.relname = 't_batch_task'
and a.atttypid = t.oid
and a.attrelid = c.oid
and a.attnum>0;
七、索引
创建索引:
drop index if exists t_user_username;
create index t_user_username on t_user (username);
创建唯一索引:
drop index if exists t_user_username;
create index t_user_username on t_user (username);
八、查询SQL
注意:PostgreSQL中的字段大小写敏感,而且只认小写字母,查询时需注意。
其他与基本sql大致相同。
8.1 to_timestamp() 字符串转时间
select * from t_user
where create_time >= to_timestamp('2023-01-01 00:00:00', 'yyyy-mm-dd hh24:MI:SS');
8.2 to_char 时间转字符串
select to_char(create_time, 'yyyy-mm-dd hh24:MI:SS') from t_user;
8.3 时间加减
-- 当前时间加一天
SELECT NOW()::TIMESTAMP + '1 day';
SELECT NOW() + INTERVAL '1 DAY';
SELECT now()::timestamp + ('1' || ' day')::interval
-- 当前时间减一天
SELECT NOW()::TIMESTAMP + '-1 day';
SELECT NOW() - INTERVAL '1 DAY';
SELECT now()::timestamp - ('1' || ' day')::interval
-- 加1年1月1天1时1分1秒
select NOW()::timestamp + '1 year 1 month 1 day 1 hour 1 min 1 sec';
8.4 like模糊查询
SELECT * FROM 表名 WHERE 字段 LIKE ('%关键字%');
九、执行sql脚本
方式一:先登录再执行
\i testdb.sql
方式二:通过psql执行
psql -d testdb -U postgres -f /pathA/xxx.sql
十、导出数据到SQL文件
pg_dump -h localhost -p 5432 -U postgres --column-inserts -t table_name -f save_sql.sql database_name
--column-inserts 以带有列名的 INSERT 命令形式转储数据。
-t 只转储指定名称的表。
-f 指定输出文件或目录名。
十一、postgresql之pg_dump命令详解
pg_dump用于提取 PostgreSQL数据库到一个脚本文件或其他的存档文件
用法:
pg_dump [connection-option...] [option...] [dbname]
描述:
pg_dump用于备份postgresql数据库,它可以在数据库运行时使用,pg_dump不会阻塞其他的用户访问数据库。
转储的内容可以脚本或存档的方式输出。脚本转储指包含SQL命令的纯文本文件,这些 SQL 命令可以用于重建该数据库并将之恢复到保存成脚本的时候的状态。要从这些脚本中恢复数,需要使用psql命令。脚本文件可以被用来重建数据库。
另一种归档文件格式必须和pg_restore一起使用重建数据库。它们允许pg_restore有选择地进行恢复,甚至在恢复前重新排列项目。归档文件格式被设计成跨平台移植。
当一种归档文件格式与pg_restore结合使用,那么pg_dump就能提供一种灵活的归档和传输机制。 pg_dump可以用于备份整个数据库,然后就可以使用pg_restore检查这个归档和/或选择要恢复的数据库部分。最灵活的输出文件格式是“自定义”格式(-Fc)。它允许选择和重新排序的所有归档的项目,在默认情况下被压缩。
在运行pg_dump的时候,你应该检查任何警告的输出(在标准错误上打印)。
Options
下面的命令行选项控制内容及格式输出。
dbname
指定数据库的名称,如果没有指定,会引用环境变量 PGDATABASE, 如果环境变量没有设置,那么会指定使用用户名来连接。
-a
--data-only
只转储数据,而不是架构(数据的定义)。表中的数据,大对象的序列值被转储。此选项与specifying --section=data类似。
-b
--blobs
包含大对象,当指定参数为 --schema, --table, or --schema-only 是该动作默认执行,所以-b选项只在选择性转储数据时有用。
-c
--clean
输出在创建数据库创建命令之前先清理(删除)该数据库对象的命令
此选项只对纯文本格式有意义的。对于归档格式,你可以在调用pg_restore时指定该选项
-C
--create
以一条创建该数据库本身并且与这个数据库联接等命令开头进行输出。 (如果是这种形式的脚本,那么你在运行脚本之前和哪个数据库联接就 不重要了。) ,此选项只对纯文本格式有意义的。对于归档格式,你可以在调用pg_restore时指定该选项。
-E encoding
--encoding=encoding
指定字符集编码。 默认情况下使用数据库编码。 (另一个方法是设置 PGCLIENTENCODING环境来达到同样的结果
-f file
--file=file
把输出发往指定的文件.如果忽略这些,则使用标准输出。
-F format
--format=format
选择输出的格式。 如下:
p
plain
输出一个纯文本 SQL 脚本文件( 默认)
c
custom
输出一个自定义格式用于pg_store 。最灵活的输出格式,它允许恢复过程中手动选择和重新排序的档案条目。默认压缩。
d
directory
输出一个目录格式的存档用于pg_restore输入。 这将创建带有一个存储每张表和BLOB数据的文件的目录,加上一个所谓的内容文件表用机器可以读取的格式 描述转储对象, 这种格式pg_restore可以读取。 默认压缩
t
tar
输出适合输入到 pg_restore 里的tar归档文件. 使用这个归档允许在恢复数据库时重新排序和/或把表结构排除在外. 同时也可能可以在恢复的时候限制对哪些数据进行恢复
-i
--ignore-version
一个工具选项,现在被忽略了.
-n schema
--schema=schema
指定输出的框架名。指定的框架将被输出转储。
-N schema
--exclude-schema=schema
排除输出的框架名。指定的框架将不被输出。
-o
--oids
为每个表都输出对象标识(OID). 如果你的应用在某种程度上引用了OID字段的话,(比如,在外键约束中 用到). 那么使用这个选项. 否则,不应该使用这个选项
-O
--no-owner
不把对象的所有权设置为对应源数据库。
这个选项只是对纯文本格式有意义.对于其它格式,在你调用 pg_restore 的时候你可以声明该选项.
-R
--no-reconnect
此选项已经过时的,但可以向后兼容.
-s
--schema-only
只输出架构(数据定义),不输出数据。
-S username
--superuser=username
在某些场合,pg_dump 创建的脚本或者归档需要有 超级用户访问的权限,比如在关闭触发器或者为大纲元素甚至所有属性时. 这个选项声明在这些场合时使用的用户名
-t table
--table=table
只输出表 table的数据
-T table
--exclude-table=table
不输出表table的数据
-v
--verbose
声明冗余模式。 这样将令 pg_dump 在标准错误上打印 进度信息.
-V
--version
输出pg_dump的版本信息然后退出.
-x
--no-privileges
--no-acl
避免输出 ACL(赋予/撤消 命令)和表的所有者关系信息
-Z 0..9
--compress=0..9
声明在那些支持压缩的格式中使用的压缩级别.零意味着没有 压缩 (目前只有客户化格式支持压缩)
--no-security-labels
不转储安全标签.
--no-tablespaces
不输出选择表空间命令.
--no-unlogged-table-data
不转储没有日志记录的表的内容
--quote-all-identifiers
强制引用所有标识符 ,这可能用于转储迁移到未来的版本引入额外的关键字.
-?
--help
显示帮助并退出.
以下选项控制数据库连接参数.
-h host
--host=host
声明运行服务器 的机器的主机名.缺省是使用本地Unix主控套接字,而不是一个 IP 联接. 如果主机名以斜扛开头,则它被用做到 Unix 域套接字的路径
-p port
--port=port
声明服务器 正在侦听并等待联接的TCP/IP 端口或本地 Unix 主控套接字文件句柄. 缺省的端口号是5432,或者环境变量 PGPORT 的值(如果存在)
-U username
--username=username
以给出用户身分联接
-w
--no-password 从来不需要密码提示
-W
--password
强制口令提示.如果服务器需要口令认证,那么这个动作应该自动发生
--role=rolename
指定一个角色的名字是用来创建转储
####################################
pg_dump -d ${DATABASE} -h ${HOST} -p ${PORT} -U ${USER} --format=d --file=${dir_name}/database/esg-$(date +%Y%m%d%H%M%S)
-F format
--format=format
选择输出的格式。 如下:
d
directory
输出一个目录格式的存档用于pg_restore输入。 这将创建带有一个存储每张表和BLOB数据的文件的目录,加上一个所谓的内容文件表用机器可以读取的格式 描述转储对象, 这种格式pg_restore可以读取。 默认压缩
#########################################
十二、pg_restore 恢复数据库
命令格式
pg_restore -d dbname bakfile
恢复示例
1.直接导入
创建待导入数据库
# 以 postgres 的身份执行 psql
$ sudo -u postgres psql
psql (12.10 (Ubuntu 12.10-0ubuntu0.20.04.1))
Type "help" for help.
postgres=# create database new_db;
CREATE DATABASE
# 后面的示例中省略数据库创建的过程
或者直接在 shell 中执行
$ createdb new_db
导入数据库
# -v 选项显示导入过程
pg_restore -v -d new_db db.dmp
在导入的过程中, PostgreSQL 会尝试更新数据库对象的所有者为原始数据库中的角色
2.不更新数据库对象的所有者
增加 -O 或 --no-owner 选项
pg_restore -O -d new_db db.dmp
3.并行导入
支持自定义和目录格式
pg_restore -j 3 -O -d new_db db.dmp
pg_restore -j 3 -O -d new_db dmp_dir/
4.导入前自动删除已有数据
pg_restore -O -c --if-exists -d new_db db.dmp
-c 或 --clean 表示导入前删除数据库对象
5.仅导入数据库的定义结构
创建表, 索引以及约束等内容
pg_restore -d new_db -s db.dmp
-s 或 --schema-only: 仅导入数据库的定义, 不导入数据
6.仅导入数据
已有表结构, 仅导入某张表的数据
# 在示例 5 的基础上导入表的数据
pg_restore -d new_db -t table -a table.dmp
-a 或 --data-only: 仅导入数据
5.数据库主备
master : 172.16.0.105
slave : 172.16.0.103
1.正常搭建postgresql,并且进行数据库初始化
2.修改master的postgresql.conf配置文件
vi postgresql.conf
listen_addresses = ‘*’
port = 5432
max_connections = 100
wal_level = hot_standby
---------------------------------
[root@localhost data]# find / -name "postgresql.conf"
find: ‘/run/user/977/gvfs’: Permission denied
/etc/postgresql-setup/upgrade/postgresql.conf
/var/lib/pgsql/data/postgresql.conf
/usr/lib/tmpfiles.d/postgresql.conf
[root@localhost data]# cat /var/lib/pgsql/data/postgresql.conf |grep listen_addresses
#listen_addresses = 'localhost' # what IP address(es) to listen on;
3.在master上创建同步账号,并且授权
create user replica with password '123456' replication;
4.修改master的pg_hba.conf配置,允许从库所在的地址通信
##开放第一条规则是为了在master上可以执行pg_basebackup
##开放第二条规则是为了从库slave可以和master正常通信
host replication replica 172.16.0.105/32 md5
host replication replica 172.16.0.103/32 md5
-----------------------------------------------
[root@localhost data]# find / -name "pg_hba.conf"
find: ‘/run/user/977/gvfs’: Permission denied
/var/lib/pgsql/data/pg_hba.conf
5. 重新加载reload配置文件
pg_ctl -D /data/pg_data/data reload
6. 在master上利用pg_basebackup进行物理全备
/usr/local/pgsql/bin/pg_basebackup -h 172.16.0.105 -p 5432 -U replica -F p -R -X s -D /data/pg_basebackup/
7. 将pg_basebackup备份文件通过scp传输到从机上
scp -r -P 22 pg_basebackup/ root@‘172.16.0.103’:/data/
8. 检查recovery.conf配置文件信息
standby_mode = ‘on’
primary_conninfo = ‘user=replica password=123456 host=172.16.0.105 port=5432 sslmode=disable sslcompression=0 target_session_attrs=any’
9. 在slave上安装postgresql,和master的postgresql安装基本一致,只是不用进行initd初始化
10. 利用slave上pg_basebackup备份文件,启动从库服务
##创建从库相关数据存储路径
mkdir -p /data/pg_data/log
touch /data/pg_data/log/pg.log
##将备份数据作为从库数据进行启动
mv /data/pg_basebackup/ /data/pg_data/data
##修改slave中postgresql.conf将max_connections=host_standby注释掉,否则在启动时候回出现以下错误
LOG: invalid value for parameter “max_connections”: “host_standby”
FATAL: configuration file “/data/pg_data/data/postgresql.conf” contains errors
##启动服务
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /data/pg_data/data/ -l /data/pg_data/log/pg.log start
11. 登录检查是否搭建成功,是否有错误日志信息,是否正常同步等
##在master上检查重库的信息
select * from pg_stat_replication;
##从库是只读模式
SQL 错误 [25006]: ERROR: cannot execute DROP TABLE in a read-only transaction
postgresql的recovery.conf配置文件
应用于恢复期,恢复开始后则不能再被更改
1)restore_command:用于获取WAL文件系统的一个已归档的本地shell命令
对于归档恢复所必需的
对于流复制是可选的
2)archive_cleanup_command:清理后备服务器不再需要的旧的归档WAL文件提供一种机制
archive_cleanup_command = ‘pg_archivecleanup /data/pg_archive %r’
3)recovery_target:恢复目标设置
##达到一致状态后就会结束,
recovery_target = ‘immediate’
##指定恢复将继续进行的已命名的恢复点,pg_create_restore_point()创建恢复点
recovery_target_name = ‘string_name’
##恢复到的时间戳
recovery_target_time = timestamp
##恢复到指定的事务id
recovery_target_xid = ‘事务id’
##恢复到一个指定的时间线。默认是沿着基础备份建了时的当前时间线恢复
recovery_target_timeline = ‘时间线’
例如:恢复到最新的时间线
recovery_target_timeline = ‘latest’
##到达恢复目标时服务器应该采取什么动作,默认是pause:暂停服务恢复。promote:将结束恢复进程,并且服务开始接受连接;shutdown:在到达恢复目标后停止服务器
recovery_target_action = ‘pause’ / ‘promote’ / ‘shutdown’
4)备用服务器设置
##是否将postgresql服务器作为一个后备服务器启动
standby_mode = ‘on’/ ‘off’
##设置从服务连接到主服务的信息,从而继续进行恢复或同步
primary_conninfo = ‘user=user_name password=pwd host=ipaddr port=port sslmode=disable sslcompression=0 target_session_attrs=any’
##指定在通过流复制连接到主服务器时要使用的现有复制槽,以控制上游节点上的资源删除
primary_slot_name
recovery参考文档:cnblogs.com/yhq1314/p/10045278.html
原文链接:https://blog.csdn.net/weixin_44375561/article/details/121676089
6.编译安装数据库
见上一个文档
7.数据的导入导出
数据导出到指定文件
debian@backup:/data/backup$ cat backup-esg.sh
#!/bin/bash -
HOST=172.30.3.11
PORT=5432
USER=esg
DATABASE=esg
dir_name=$(dirname $0)
pg_dump -d ${DATABASE} -h ${HOST} -p ${PORT} -U ${USER} --format=d --file=${dir_name}/database/esg-$(date +%Y%m%d%H%M%S)
这是一个用于导出 PostgreSQL 数据库的命令。让我为您解释其中的各个参数和选项:
pg_dump: 这是 PostgreSQL 数据库提供的一个实用程序,用于备份或导出数据库。
-d ${DATABASE}: 指定要导出的数据库名称。${DATABASE}是一个变量,需要替换为实际的数据库名称。
-h ${HOST}: 指定数据库所在的主机名或 IP 地址。${HOST}是一个变量,需要替换为实际的主机名或 IP 地址。
-p ${PORT}: 指定数据库服务的端口号。${PORT}是一个变量,需要替换为实际的端口号。
-U ${USER}: 指定用于连接数据库的用户名。${USER}是一个变量,需要替换为实际的用户名。
--format=d: 指定导出的文件格式为自定义格式 (custom format)。这种格式可以保留数据库的完整性和结构信息。
--file=${dir_name}/database/esg-$(date +%Y%m%d%H%M%S): 指定导出的文件路径和文件名。${dir_name}是一个变量,表示导出文件所在的目录名,${date +%Y%m%d%H%M%S}是一个命令替换,用于生成当前的日期和时间,作为导出文件名的一部分。
要将使用 pg_dump 导出的数据导入到一个新建的数据库表中,您可以使用 pg_restore 命令或 psql 命令。下面我将为您介绍两种方法的基本用法:
使用 pg_restore 导入数据:
pg_restore -d ${NEW_DATABASE} -h ${NEW_HOST} -p ${NEW_PORT} -U ${NEW_USER} ${dump_file}
${NEW_DATABASE}: 新建的目标数据库的名称。
${NEW_HOST}: 目标数据库所在的主机名或 IP 地址。
${NEW_PORT}: 目标数据库服务的端口号。
${NEW_USER}: 用于连接目标数据库的用户名。
${dump_file}: 使用 pg_dump 导出的备份文件的路径
使用 psql 导入数据:
psql -d ${NEW_DATABASE} -h ${NEW_HOST} -p ${NEW_PORT} -U ${NEW_USER} -f ${dump_file}
${NEW_DATABASE}: 新建的目标数据库的名称。
${NEW_HOST}: 目标数据库所在的主机名或 IP 地址。
${NEW_PORT}: 目标数据库服务的端口号。
${NEW_USER}: 用于连接目标数据库的用户名。
${dump_file}: 使用 pg_dump 导出的备份文件的路径。
数据库安装postgresql的更多相关文章
- 在linux系统下检查postgresql数据库安装,登录数据库及简单的查看数据库
1. 检查Linux系统是否安装数据库 首先查看自己的系统是否安装了postgresql数据库命令如下: rpm -qa | grep postgresql 如果没有显示查询结果(如下图所示)说 ...
- [zz]安装PostgreSQL数据库(Linux篇)
0.编译环境 Linux: CentOS 5.5 gcc: 4.1.2 1. 安装PostgreSQL 1) 解压postgresql-9.1.7.tar.bz2 #tar jxvf postgres ...
- Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库
前提是您必须拥有Windows Azure的账号,如果没有的话,可以去Windows Azure 中国区网站申请免费试用账号.哈哈,我就是第一批申请的试用账号,感觉自己挺幸运的.申请的过程就不写了,请 ...
- PostGreSQL数据库安装教程
windows 10 x64 pro 1703安装postgresql-9.6.3-2-windows-x64.exe数据库,步骤如下: 第一:下载数据库安装程序,下载地址为:https://www. ...
- postgresql数据库安装及简单操作
自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系 ...
- Windows安装PostgreSQL数据库 无法初始化数据库问题
背景 由于项目的需要,使用PostgreSQL数据库,因此在Windows上安装PostgreSQL数据库.但是在安装后,无法访问本地数据库,这个时候查看/data目录,没有任何文件.而且安装过程中, ...
- PostGreSQL数据库安装配置说明
windows 10 x64 pro 1703安装postgresql-9.6.3-2-windows-x64.exe数据库,步骤如下: 第一:下载数据库安装程序,下载地址为:https://www. ...
- 安装PostgreSQL数据库(Linux篇)
0.编译环境 Linux: CentOS 5.5 gcc: 4.1.2 1. 安装PostgreSQL 1) 解压postgresql-9.1.7.tar.bz2 #tar jxvf postgres ...
- PostgreSQL数据库安装
PostgreSQL数据库安装 postgresqllinux9.6.0 2018年01月31日 10时53分13秒 编译以及安装 源码编译 程序安装 数据库的启动和停止 启动数据库 关闭数据库 数据 ...
- centos7下postgresql数据库安装及配置
1.安装 #yum install -y postgresql-server 2.postgresql数据库初始化 #service postgresql initdb 3.启动postgresql服 ...
随机推荐
- C#/VB.NET:如何从 PowerPoint 演示文稿中提取文本
在学习或者日常工作中,有时我们需要把幻灯片的东西整理成文字,而从 PowerPoint 演示文稿中一张一张的整理手动复制粘贴,整个过程会非常费精力且耗时.那么怎么样才能比较轻松且快速地提取PowerP ...
- js 之三 鼠标和键盘事件处理
鼠标和键盘事件 鼠标常见的事件,按下onmousedown,拖动onmounsemove,松开onmousevtup,滚轮等事件: 开发需求: 当鼠标点击控件,进行拖拽,控件跟随鼠标移动: 拖拽事件需 ...
- ODOO前端引用css如何修改页面属性
odoo前端存在一些样式不合理的地方,如何通过ccs修改页面属性: 1 通过页面属性class: 2 新建模块后,创建static/src/css/styles.css文件 3 style.cs ...
- pyhton 自动化进阶学习1 合并excel 报表,然后进行的透视表操作
import xlrd import xlsxwriter import osimport pandas as pdimport numpy as np# 对合并报表进行透视# 待续# 获取文件夹所有 ...
- /etc/netplan/network-manager-all.yaml 配置服务器ip
本文为博主原创,转载请注明出处: /etc/netplan 是用于配置 Ubuntu 系统网络接口的目录.在 Ubuntu 中,网络配置的默认工具为 Netplan,而 /etc/netplan 则 ...
- Java面向对象基础学习
一.面向对象语言编程 Java是一门面向对象的编程语言(OOP),万物皆对象 面向对象初步认识,在大多数编程语言中根据解决问题的思维方式不同分为两种编程语言 1.面向过程编程 2.面向 ...
- youtobe深度学习推荐系统-学习笔记
简介 前言 本文是Deep Neural Networks for YouTube Recommendations 论文的学习笔记.淘宝的召回模型曾经使用过这篇论文里面的方案,后续淘宝召回模型升级到了 ...
- 为什么要重写equals要重写hashcode方法
Java 比较(==, equals) 一.= = ==:比较两个对象的引用是否是同一个地址 二.equals object中equals方法调用的就是==,可以在其他类中重写该方法. 三.为什么要重 ...
- React后台管理系统06 路由
在src目录下新建2views文件夹,用来存放组件,这里我们新建2个路由组件Home About,如下所示: 创建好这两个路由组件之后,在src目录里面我们新建一个router路由文件夹,然后命名一个 ...
- PHP生成随机中文姓名
<?phpfunction &xingming(){ for ($i = 0; $i < 1; $i++) { $xing = "赵,钱,孙,李,周,吴,郑,王,冯,陈, ...