PostgreSQL数据库管理数据导入导出

PostgreSQL数据库管理数据导入导出

概述

数据库的导入导出是最常用的功能之一,而PostgreSQL提供的对应工具为pg_dumppg_restorepg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。

1 pg_dump实例

1.1  pg_dump导出-pgsql导入整个表-默认copy

1.1.1 pg_dump导出

Pg_dump导出默认是COPY命令,这样的导出快,导入时候快。

  --inserts                 INSERT命令,而不是COPY命令的形式转储数据

pg_dump -U postgres -d T_STATION -t nettoll.s24_exit_subshifts_new -f /usr/local/pgsql/data/s24.sql

1.1.2 删除表并导入

T_STATION=# drop table nettoll.s24_exit_subshifts_new;

DROP TABLE

 

[postgres@pg11 ~]$ psql -d T_STATION -f /usr/local/pgsql/data/s24.sql

SET

SET

SET

SET

SET

 set_config

------------

 

(1 row)

 

SET

SET

SET

SET

SET

SET

CREATE TABLE

ALTER TABLE

COMMENT

COMMENT

COPY 3469

ALTER TABLE

CREATE INDEX

CREATE INDEX

CREATE INDEX

CREATE INDEX

GRANT

1.2  pg_dump导出-pgsql导入部分数据-默认

  --inserts 将数据输出为的INSERT命令 (而不是 COPY). 这样会导致恢复非常缓慢.但却令归档更容易移植到其它 SQL 数据库.

 -a 只导出数据

导出3至6号的数据,并删除3号和5号数据,导入看看是否成功。

select * into nettoll.s24_3_6 from nettoll.s24_exit_subshifts_new where shift_when between '2020-06-03' and '2020-06-06';

1.2.1 pg_dump导出--inserts

pg_dump -U postgres -d T_STATION -t nettoll.s24_3_6 --inserts -a -f /usr/local/pgsql/data/s240603.sql

1.2.1 删除数据并导入

select * from nettoll.s24_exit_subshifts_new where shift_when in ('2020-06-03','2020-06-05');

35条

delete from nettoll.s24_exit_subshifts_new where shift_when in ('2020-06-03','2020-06-05');

修改导出文件-改变表名

vi /usr/local/pgsql/data/s240603.sql

:%s/s24_3_6/s24_exit_subshifts_new/g

143 次替换,共 143 行

成功

[postgres@pg11 ~]$  psql -d T_STATION -f /usr/local/pgsql/data/s240603.sql

INSERT 0 1

INSERT 0 1

INSERT 0 1

INSERT 0 1

INSERT 0 1

psql:/usr/local/pgsql/data/s240603.sql:39: ERROR:  duplicate key value violates unique constraint "s24_exit_subshifts_new_pkey"

DETAIL:  Key (plaza_id, lane_no, op_id, time_begin, data_source)=(100996, 2, 7660066, 2020-06-03 23:38:29, 1) already exists.

psql:/usr/local/pgsql/data/s240603.sql:40: ERROR:  duplicate key value

 

你可能感兴趣的:(PostgreSQL)