dmp文件导入数据库(怎么将dmp文件导入数据库)

1、数据导入导出 – INSERT

⚫ 用户可以通过以下方式执行INSERT语句直接向openGauss数据库写入数据:

 使用openGauss数据库提供的客户端工具向openGauss数据库写入数据。

 通过JDBC/ODBC驱动连接数据库执行INSERT语句向openGauss数据库写入数据。

⚫ openGauss数据库支持完整的数据库事务级别的增删改操作。INSERT是最简单的一种数 据写入方式,这种方式适合数据写入量不大,并发度不高的场景。

2、数据导入导出 – COPY FROM STDIN

⚫ 用户可以使用以下方式通过COPY FROM STDIN语句直接向openGauss写入数据。

 通过键盘输入向openGauss写入数据。通过COPY命令实现在表和文件之间拷贝数据。COPY FROM表示从一个文件拷贝数据到一个表,COPY TO表示把一个表的数据拷贝到一个文件。

◼ COPY FROM/TO适合低并发,本地小数据量导入导出。

 通过JDBC驱动的CopyManager接口从文件或者数据库向openGauss写入数据。此方法支持 COPY语法中copy option的所有参数。

◼ CopyManager是 openGauss JDBC驱动中提供的一个API接口类,用于批量向openGauss中导入数据。

◼ CopyManager类位于org.postgresql.copy Package中,继承自java.lang.Object类。

⚫ COPY适用场景:

 小数据量表以文本数据作为来源导入;

 小数量表的导出;

 查询结果集导出。

⚫ COPY使用方法:

 文本数据导入;

copy t1 from ‘/data/input/t1.txt’ delimiter ‘^’;

 表数据导出;

copy t1 to ‘/data/input/t1_output.txt’ delimiter ‘^’;

 查询结果集导出;

copy (select * from t1 where a2=1) to ‘/data/input/t1_output.txt’ delimiter ‘^’;

3、数据导入导出 – gsql

⚫ openGauss的gsql工具提供了元命令\copy进行数据导入导出。

⚫ \copy元命令语法

dmp文件导入数据库(怎么将dmp文件导入数据库)

⚫ 说明:

 在任何gsql客户端登录数据库成功后,可以使用该命令进行数据的导入/导出。但是与SQL的 COPY命令不同,该命令读取/写入的文件是本地文件,而非数据库服务器端文件;因此要操作 的文件的可访问性、权限等,都是受限于本地用户的权限。

4、数据导入导出 – gs_dump

⚫ openGauss提供的gs_dump和gs_dumpall工具,能够帮助用户导出需要的数据库对象或 其相关信息。通过导入工具将导出的数据信息导入至需要的数据库,可以完成数据库信 息的迁移。

gs_dump支持导出单个数据库或其内的对象,而gs_dumpall支持导出openGauss中所有 数据库或各库的公共全局对象。

gs_dump 参数说明:

dmp文件导入数据库(怎么将dmp文件导入数据库)

5、导出数据库

⚫ openGauss支持使用gs_dump工具导出某个数据库级的内容,包含数据库的数据和所有 对象定义。可根据需要自定义导出如下信息:

 导出数据库全量信息,包含数据和所有对象定义。使用导出的全量信息可以创建一个与当前库 相同的数据库,且库中数据也与当前库相同。

 仅导出所有对象定义,包括:库定义、函数定义、模式定义、表定义、索引定义和存储过程定 义等。使用导出的对象定义,可以快速创建一个相同的数据库,但是库中并无原数据库的数据。

 仅导出数据,不包含所有对象定义。

⚫ 示例:使用gs_dump导出postgres数据库。

gs_dump -U jack -f /home/omm/backup/postgres_backup.tar -p 8000 postgres -F t

6、导出模式

⚫ openGauss目前支持使用gs_dump工具导出模式级的内容,包含模式的数据和定义。

⚫ 用户可通过灵活的自定义方式导出模式内容,不仅支持选定一个模式或多个模式的导出, 还支持排除一个模式或者多个模式的导出。可根据需要自定义导出如下信息:

 导出模式全量信息,包含数据和对象定义。

 仅导出数据,即模式包含表中的数据,不包含对象定义。

 仅导出模式对象定义,包括:表定义、存储过程定义和索引定义等。

⚫ 示例:使用gs_dump同时导出hr和public模式。

gs_dump -U jack -f /home/omm/backup/MPPDB_schema_backup -p 8000 human_resource -n hr -n public -F d

7、导出表

⚫ openGauss支持使用gs_dump工具导出表级的内容,包含表定义和表数据。视图、序列 和外表属于特殊的表。

⚫ 用户可通过灵活的自定义方式导出表内容,不仅支持选定一个表或多个表的导出,还支 持排除一个表或者多个表的导出。可根据需要自定义导出如下信息:

 导出表全量信息,包含表数据和表定义。

 仅导出数据,不包含表定义。

 仅导出表定义。

⚫ 示例:使用gs_dump同时导出指定表hr.staffs和hr.employments。

gs_dump -U jack -f /home/omm/backup/MPPDB_table_backup -p 8000 human_resource -t hr.staffs -t hr.employments -F d

8、导出所有数据库

⚫ openGauss支持使用gs_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库 信息和公共的全局对象信息。可根据需要自定义导出如下信息:

 导出所有数据库全量信息,包含openGauss中每个数据库信息和公共的全局对象信息(包含角色和表空 间信息)。使用导出的全量信息可以创建与当前主机相同的一个主机环境,拥有相同数据库和公共全局 对象,且库中数据也与当前各库相同。

 仅导出数据,即导出每个数据库中的数据,且不包含所有对象定义和公共的全局对象信息。

 仅导出所有对象定义,包括:表空间、库定义、函数定义、模式定义、表定义、索引定义和存储过程定 义等。使用导出的对象定义,可以快速创建与当前主机相同的一个主机环境,拥有相同的数据库和表空 间,但是库中并无原数据库的数据。

⚫ 示例:使用gs_dumpall一次导出所有数据库信息。

gs_dumpall -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000

9、无权限角色导出数据

⚫ gs_dump和gs_dumpall通过-U指定执行导出的用户帐户。如果当前使用的帐户不具备导 出所要求的权限时,会无法导出数据。此时,可在导出命令中设置–role参数来指定具备 权限的角色。在执行命令后,gs_dump和gs_dumpall会使用–role参数指定的角色,完 成导出动作。

⚫ 示例:使用gs_dump导出human_resource数据库数据。

 假设用户jack不具备导出数据库human_resource的权限,而角色role1具备该权限,要实现导 出数据库human_resource,可以在导出命令中设置–role角色为role1,使用role1的权限,完 成导出目的。

gs_dump -U jack -f /home/omm/backup/MPPDB_backup.tar -p 8000 human_resource –role role1 — rolepassword abc@1234 -F t

数据导入导出 – gs_restore

⚫ gs_restore是openGauss数据库提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump 导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录归档格式和 tar归档格式。

⚫ gs_restore具备如下两种功能。

 导入至数据库

◼ 如果指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接数据库的密码。

 导入至脚本文件

◼ 如果未指定导入数据库,则创建包含重建数据库所需的SQL语句脚本,并将其写入至文件或者标准输出。该脚本文 件等效于gs_dump导出的纯文本格式文件。

⚫ gs_restore工具在导入时,允许用户选择需要导入的内容,并支持在数据导入前对等待导入的内容 进行排序。

gs_restore 参数说明

dmp文件导入数据库(怎么将dmp文件导入数据库)

gs_restore 示例

⚫ 使用gs_restore命令,从postgres整个数据库内容的导出文件中,将数据库的所有对象的 定义导入到backupdb。

gs_restore -U jack /home/omm/backup/MPPDB_backup.tar -p 8000 -d backupdb -s -e -c

⚫ 使 用 gs_restore 命 令 , 导 入 指 定 MPPDB_backup.dmp 文 件 ( 自 定 义 归 档 格 式 ) 中 postgres数据库的数据和对象定义。

gs_restore backup/MPPDB_backup.dmp -p 8000 -d backupdb

⚫ 使用gs_restore命令,将postgres数据库的所有对象的定义导入至backupdb数据库。导 入前,postgres存在完整的定义和数据,导入后,backupdb数据库只存在所有对象定义, 表没有数据。

gs_restore /home/omm/backup/MPPDB_backup.tar -p 8000 -d backupdb -s -e -c

10、ANALYZE

⚫ 执行计划生成器需要使用表的统计信息,以生成最有效的查询执行计划,提高查询性能。因此数据导入完成后,建议执行ANALYZE语句生成最新的表统计信息。统计结果存储在 系统表PG_STATISTIC中。

⚫ ANALYZE支持的表类型有行/列存表。ANALYZE同时也支持对本地表的指定列进行信息 统计。

⚫ ANALYZE语法(以product_info表为例)。

postgres=# ANALYZE product_info;

ANALYZE

VACUUM

⚫ 如果导入过程中,进行了大量的更新或删除行时,应运行VACUUM FULL命令,然后运 行ANALYZE命令。大量的更新和删除操作,会产生大量的磁盘页面碎片,从而逐渐降低 查询的效率。VACUUM FULL可以将磁盘页面碎片恢复并交还操作系统。

⚫ VACUUM FULL语法(以product_info表为例)。

postgres=# VACUUM FULL product_info;

VACUUM

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至QQ邮箱:3628405936@qq.com 举报,本站将立刻删除。
(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注