openGauss数据导入导出

您所在的位置:网站首页 将sql文件导入数据库 openGauss数据导入导出

openGauss数据导入导出

2023-09-28 06:37| 来源: 网络整理| 查看: 265

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元命令语法

b13a042fbc854205eec95c740dff0026.jpeg

⚫ 说明:;

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

4、数据导入导出 – gs_dump;

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

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

gs_dump 参数说明:

bafefca2b1bfa1278834994a78e2f21e.jpeg

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 参数说明

a7e08f75963ee4f4465d0fd9c5c2db8d.jpeg

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3