华为云用户手册

  • 导入流程图 图2 并行导入流程 表1 流程说明 流程 说明 子任务 上传数据至OBS。 在OBS服务器上规划存储路径,并上传数据文件。 详细请参见上传数据到OBS。 - 创建OBS外表。 创建外表用于识别OBS服务器上的数据源文件。在OBS外表中保存了数据源在OBS服务器上的桶名、对象名,文件格式、存放位置、编码格式、数据间的分隔符等信息。 详细请参见创建OBS外表。 - 执行导入数据。 在创建好外表后,通过INSERT语句,将数据快速、高效地导入到目标表中。 详细请参见执行导入数据。 - 处理错误表。 在数据并行导入发生错误时,请根据错误信息,处理错误表,以保证导入数据的完整性。 说明: 使用外表从OBS并行导入数据中方式二的导入方式,不支持错误表。 - 优化查询效率。 导入数据后,通过ANALYZE语句生成表统计信息。ANALYZE语句会将统计结果自动存储在系统表PG_STATISTIC中。执行计划生成器会使用这些统计数据,以生成最有效的查询执行计划。 -
  • 相关概念 数据源文件:存储有数据的TEXT、 CS V、ORC、PARQUET、CARBONDATA、JSON文件。文件中保存的是待并行导入数据库的数据。 OBS: 对象存储服务 ,是一种可存储文档、图片、影音视频等非结构化数据的 云存储 服务。向 GaussDB (DWS)并行导入数据时,数据对象放置在OBS服务器上。 桶(Bucket):对OBS中的一个存储空间的形象称呼,是存储对象的容器。 对象存储是一种非常扁平化的存储方式,桶中存储的对象都在同一个逻辑层级,去除了文件系统中的多层级树形目录结构。 在OBS中,桶名必须是全局唯一的且不能修改,即用户创建的桶不能与自己已创建的其他桶名称相同,也不能与其他用户创建的桶名称相同。每个桶在创建时都会生成默认的桶ACL(Access Control List),桶ACL列表的每项包含了对被授权用户授予什么样的权限,如读取权限、写入权限、完全控制权限等。用户只有对桶有相应的权限,才可以对桶进行操作,如创建、删除、显示、设置桶ACL等。 一个用户最多可创建100个桶,但每个桶中存放的总数据容量和对象/文件数量没有限制。 对象:是存储在OBS中的基本数据单位。用户上传的数据以对象的形式存储在OBS的桶中。对象的属性包括名称Key,Metadata,Data。 通常,将对象等同于文件来进行管理,但是由于OBS是一种对象存储服务,并没有文件系统中的文件和文件夹概念。为了使用户更方便进行管理数据,OBS提供了一种方式模拟文件夹。通过在对象的名称中增加“/”,如tpcds1000/stock.csv,tpcds1000可以等同于文件夹,stock.csv就可以等同于文件名,而对象名称(key)仍然是tpcds1000/stock.csv、对象的内容就是stock.csv数据文件的内容。 Key:对象的名称(键),为经过UTF-8编码的长度大于0且不超过1024的字符序列,一个桶里的每个对象必须拥有唯一的对象键值。用户可使用桶名+对象名来存储和获取对应的对象。 Metadata:对象元数据,用来描述对象的信息。元数据又可分为系统元数据和用户元数据。这些元数据以键值对(Key-value)的形式随http头域一起上传到OBS系统。 系统元数据由OBS系统产生,在处理对象数据时使用。系统元数据包括:Date, Content-length, last-modify, Content-MD5等。 用户元数据由用户上传对象时指定,是用户自己对对象的一些描述信息。 Data:对象的数据内容,OBS对于数据的内容是无感知的,即认为对象内的数据为无状态的二进制数据。 数据库普通表:数据库中的普通表,数据源文件中的数据最终并行导入到这些表中存储,包括行存表、列存表。 外表:用于识别数据源文件中的数据。外表中保存了数据源文件的位置、文件格式、编码格式、数据间的分隔符等信息。
  • 创建访问密钥(AK和SK) 在创建访问密钥前,请确保登录控制台的帐号已通过实名认证。 通过管理控制台创建访问密钥(AK和SK)操作步骤如下: 登录GaussDB(DWS) 管理控制台。 单击右上角用户名,在下拉菜单中单击“我的凭证”。 在左侧导航树单击“访问密钥”。 如果在访问密钥列表中已经有访问密钥了,可以直接使用现有的访问密钥。但是,在访问密钥列表中只能查看到访问密钥ID(即Access Key ID),只有在新增访问密钥时,用户才可以下载到含有Access Key ID和Secret Access Key的密钥文件。如果您没有该密钥文件,可以单击“新增访问密钥”重新创建。 每个用户最多可创建两个有效的访问密钥,如果当前已存在2个访问密钥,只能先删除现有的访问密钥,然后再重新创建。删除时,需要输入当前用户的登录密码、邮箱或手机短信的验证码,验证通过才能成功删除。 为了账号安全性,建议您定期更换并妥善保存访问密钥。 单击“新增访问密钥”。 在弹出的对话框中,输入登录密码和对应验证码,然后单击“确定”。 用户如果未绑定邮箱和手机,则只需输入登录密码。 用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。 在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。 为防止访问密钥泄露,建议您将其保存到安全的位置。 如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。 打开下载下来的“credentials.csv”文件即可获取到访问密钥(AK和SK)。
  • 关于COPY FROM STDIN导入数据 这种方式适合数据写入量不太大, 并发度不太高的场景。 用户可以使用以下方式通过COPY FROM STDIN语句直接向GaussDB(DWS)写入数据。 通过键盘输入向GaussDB(DWS)写入数据。 通过JDBC驱动的CopyManager接口从文件或者数据库向GaussDB(DWS)写入数据。此方法支持COPY语法中copy option的所有参数。 父主题: 使用COPY FROM STDIN导入数据
  • 操作步骤 以gds_user用户登录安装GDS的数据服务器。 请根据启动GDS的方式,选择停止GDS的方式。 若用户使用“gds”命令启动GDS,请使用以下方式停止GDS。 执行如下命令,查询GDS进程号。 ps -ef|grep gds 示例:其中GDS进程号为128954。 ps -ef|grep gdsgds_user 128954 1 0 15:03 ? 00:00:00 gds -d /input_data/ -p 192.168.0.90:5000 -l /log/gds_log.txt -Dgds_user 129003 118723 0 15:04 pts/0 00:00:00 grep gds 使用“kill”命令,停止GDS。其中128954为上一步骤中查询出的GDS进程号。 kill -9 128954
  • 常用方法 表1 CopyManager常用方法 返回值 方法 描述 throws CopyIn copyIn(String sql) - SQLException long copyIn(String sql, InputStream from) 使用COPY FROM STDIN从InputStream中快速向数据库中的表导入数据。 SQLException,IOException long copyIn(String sql, InputStream from, int bufferSize) 使用COPY FROM STDIN从InputStream中快速向数据库中的表导入数据。 SQLException,IOException long copyIn(String sql, Reader from) 使用COPY FROM STDIN从Reader中快速向数据库中的表导入数据。 SQLException,IOException long copyIn(String sql, Reader from, int bufferSize) 使用COPY FROM STDIN从Reader中快速向数据库中的表导入数据。 SQLException,IOException CopyOut copyOut(String sql) - SQLException long copyOut(String sql, OutputStream to) 将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。 SQLException,IOException long copyOut(String sql, Writer to) 将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。 SQLException,IOException
  • 相关概念 数据文件:存储有数据的TEXT、CSV或FIXED文件。文件中保存的是从GaussDB(DWS)数据库导出的数据。 外表:用于规划导出数据文件的数据文件格式、存放位置、编码格式等信息。 GDS:数据服务工具。在导出数据时,需要将此工具部署到数据文件所在的服务器上,使DN可以通过该工具导出数据。 表:数据库中的表,包括行存表和列存表。数据文件中的数据从这些表中导出。 Remote导出模式:将集群中的业务数据导出到集群之外的主机上。
  • 概述 通过外表导出数据:通过GDS外表设置的导出模式、导出数据格式等信息来指定待导出的数据文件,利用多DN并行的方式,将数据从数据库导出到数据文件中,从而提高整体导出性能。不支持直接导出文件到HDFS文件系统。 CN只负责任务的规划及下发,把数据导出的工作交给了DN,释放了CN的资源,使其有能力处理外部请求。 通过让各个DN都参与数据导出,充分利用各个设备的计算能力及网络带宽。 图1 通过外表导出数据
  • 导出流程 图2 并行导出流程 表1 流程说明 流程 说明 子任务 规划导出数据。 根据所选模式,准备需要导出的数据并规划导出路径。 详细内容请参见规划导出数据 - 启动GDS。 若规划的导出模式为Remote模式,需在数据服务器上安装配置并启动GDS。 详细内容请参见安装配置和启动GDS。 - 创建外表。 创建外表用于帮助GDS指定导出的数据文件。外表中保存了导出数据文件的位置、文件格式、编码格式、数据间的分隔符等信息。 详细内容请参见创建GDS外表。 - 执行导出数据。 在创建好外表后,通过INSERT语句,将数据快速、高效地导出到数据文件中。 详细内容请参见执行导出数据。 - 停止GDS。 数据导出完成后,停止GDS。 详细请参见停止GDS。 -
  • 规划导出路径 Remote模式 以root用户登录GDS数据服务器,创建导出的数据文件存放目录“/output_data”。 mkdir -p /output_data (可选)创建用户及所属的用户组。此用户为启动GDS的用户,该用户需要拥有导出数据文件存放目录的写权限。 groupadd gdsgrpuseradd -g gdsgrp gdsuser 若出现以下提示,说明数据库用户及所属用户组已存在,可跳过本步骤。 useradd: Account 'gdsuser' already exists.groupadd: Group 'gdsgrp' already exists. 修改数据文件目录属主为gdsuser。 chown -R gdsuser:gdsgrp /output_data
  • 注意事项 禁止修改导出的文件和内容,否则可能无法恢复成功。 为了保证数据一致性和完整性,导出工具会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump和gs_dumpall会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 由于gs_dumpall读取所有数据库中的表,因此必须以数据库集群管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组,以及创建数据库。 由于GaussDB(DWS)数据库所有视图的定义都默认带有表名或别名的前缀(即tab.col的形式),因此可能与原始定义不符,导致在极少的场景下会发生重建视图字段对应基表不准确而报错的情况。为避免此情况建议在导出视图定义时,设置guc参数behavior_compat_options='compat_display_ref_table',使导出定义与原始语句一致。
  • 示例 示例一:执行gs_dump,导出hr模式全量信息,并对导出文件进行压缩,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup.sql -p 8000 -h 10.10.10.100 human_resource -n hr -Z 6 -F pgs_dump[port=''][human_resource][2017-07-21 16:05:55]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:05:55]: total time: 2425 ms 示例二:执行gs_dump,仅导出hr模式的数据,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_data_backup.tar -p 8000 -h 10.10.10.100 human_resource -n hr -a -F tgs_dump[port=''][human_resource][2018-11-14 15:07:16]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 15:07:16]: total time: 1865 ms 示例三:执行gs_dump,仅导出hr模式的定义,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_def_backup -p 8000 -h 10.10.10.100 human_resource -n hr -s -F dgs_dump[port=''][human_resource][2018-11-14 15:11:34]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 15:11:34]: total time: 1652 ms 示例四:执行gs_dump,导出human_resource数据库时,排除hr模式,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup.dmp -p 8000 -h 10.10.10.100 human_resource -N hr -F cgs_dump[port=''][human_resource][2017-07-21 16:06:31]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:06:31]: total time: 2522 ms 示例五:执行gs_dump,同时导出hr和public模式,且仅导出模式定义,并对导出文件进行加密,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup1.tar -p 8000 -h 10.10.10.100 human_resource -n hr -n public -s --with-encryption AES128 --with-key 1234567812345678 -F tgs_dump[port=''][human_resource][2017-07-21 16:07:16]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:07:16]: total time: 2132 ms 示例六:执行gs_dump,导出human_resource数据库时,排除hr和public模式,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup2.dmp -p 8000 -h 10.10.10.100 human_resource -N hr -N public -F cgs_dump[port=''][human_resource][2017-07-21 16:07:55]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:07:55]: total time: 2296 ms 示例七:执行gs_dump,导出public模式下所有表(视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_backup3.dmp -p 8000 -h 10.10.10.100 human_resource -t public.* -t hr.staffs -F cgs_dump[port=''][human_resource][2018-12-13 09:40:24]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-12-13 09:40:24]: total time: 896 ms
  • 示例 示例一:执行gs_dump,导出gaussdb数据库全量信息,并对导出文件进行压缩,导出文件格式为sql文本格式。 gs_dump -W password -U jack -f /home//backup/postgres_backup.sql -p 8000 -h 10.10.10.100 gaussdb -Z 8 -F pgs_dump[port=''][gaussdb][2017-07-21 15:36:13]: dump database gaussdb successfullygs_dump[port=''][gaussdb][2017-07-21 15:36:13]: total time: 3793 ms 示例二:执行gs_dump,仅导出gaussdb数据库中的数据,不包含数据库对象定义,导出文件格式为自定义归档格式。 gs_dump -W Password -U jack -f /home//backup/postgres_data_backup.dmp -p 8000 -h 10.10.10.100 gaussdb -a -F cgs_dump[port=''][gaussdb][2017-07-21 15:36:13]: dump database gaussdb successfullygs_dump[port=''][gaussdb][2017-07-21 15:36:13]: total time: 3793 ms 示例三:执行gs_dump,仅导出gaussdb数据库所有对象的定义,导出文件格式为sql文本格式。 --导出前,表nation有数据select n_nationkey,n_name,n_regionkey from nation limit 3; n_nationkey | n_name | n_regionkey -------------+---------------------------+------------- 0 | ALGERIA | 0 3 | CANADA | 1 11 | IRAQ | 4(3 rows)gs_dump -W password -U jack -f /home//backup/postgres_def_backup.sql -p 8000 -h 10.10.10.100 gaussdb -s -F pgs_dump[port=''][gaussdb][2017-07-20 15:04:14]: dump database gaussdb successfullygs_dump[port=''][gaussdb][2017-07-20 15:04:14]: total time: 472 ms 示例四:执行gs_dump,仅导出gaussdb数据库的所有对象的定义,导出文件格式为文本格式,并对导出文件进行加密。 gs_dump -W password -U jack -f /home//backup/postgres_def_backup.sql -p 8000 -h 10.10.10.100 gaussdb --with-encryption AES128 --with-key 1234567812345678 -s -F pgs_dump[port=''][gaussdb][2018-11-14 11:25:18]: dump database gaussdb successfullygs_dump[port=''][gaussdb][2018-11-14 11:25:18]: total time: 1161 ms
  • 示例 示例一:执行gs_dumpall,导出所有数据库全量信息(dbadmin用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 gs_dumpall[port=''][2017-07-21 15:57:31]: dumpall operation successfulgs_dumpall[port=''][2017-07-21 15:57:31]: total time: 9627 ms 示例二:执行gs_dumpall,仅导出所有数据库定义(dbadmin用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -s gs_dumpall[port=''][2018-11-14 11:28:14]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 11:28:14]: total time: 4147 ms 示例三:执行gs_dumpall,仅导出所有数据库中数据,并对导出文件进行加密,导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -a --with-encryption AES128 --with-key 1234567812345678gs_dumpall[port=''][2018-11-14 11:32:26]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 11:23:26]: total time: 4147 ms
  • 示例 示例一:执行gs_dump,导出表hr.staffs的定义和数据,并对导出文件进行压缩,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -Z 6 -F pgs_dump[port=''][human_resource][2017-07-21 17:05:10]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:05:10]: total time: 3116 ms 示例二:执行gs_dump,只导出表hr.staffs的数据,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_data_backup.tar -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -a -F t gs_dump[port=''][human_resource][2017-07-21 17:04:26]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:04:26]: total time: 2570 ms 示例三:执行gs_dump,导出表hr.staffs的定义,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_def_backup -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -s -F d gs_dump[port=''][human_resource][2017-07-21 17:03:09]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:03:09]: total time: 2297 ms 示例四:执行gs_dump,不导出表hr.staffs,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup4.dmp -p 8000 -h 10.10.10.100 human_resource -T hr.staffs -F cgs_dump[port=''][human_resource][2017-07-21 17:14:11]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:14:11]: total time: 2450 ms 示例五:执行gs_dump,同时导出两个表hr.staffs和hr.employments,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup1.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -t hr.employments -F pgs_dump[port=''][human_resource][2017-07-21 17:19:42]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:19:42]: total time: 2414 ms 示例六:执行gs_dump,导出时,排除两个表hr.staffs和hr.employments,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup2.sql -p 8000 -h 10.10.10.100 human_resource -T hr.staffs -T hr.employments -F pgs_dump[port=''][human_resource][2017-07-21 17:21:02]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:21:02]: total time: 3165 ms 示例七:执行gs_dump,导出表hr.staffs的定义和数据,只导出表hr.employments的定义,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup3.tar -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -t hr.employments --exclude-table-data hr.employments -F tgs_dump[port=''][human_resource][2018-11-14 11:32:02]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 11:32:02]: total time: 1645 ms 示例八:执行gs_dump,导出表hr.staffs的定义和数据,并对导出文件进行加密,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup4.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs --with-encryption AES128 --with-key 1212121212121212 -F pgs_dump[port=''][human_resource][2018-11-14 11:35:30]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 11:35:30]: total time: 6708 ms 示例九:执行gs_dump,导出public模式下所有表(包括视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup5.dmp -p 8000 -h 10.10.10.100 human_resource -t public.* -t hr.staffs -F cgs_dump[port=''][human_resource][2018-12-13 09:40:24]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-12-13 09:40:24]: total time: 896 ms 示例十: 执行gs_dump,仅导出依赖于t1模式下的test1表对象的视图信息,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_view_backup6 -p 8000 -h 10.10.10.100 human_resource -t t1.test1 --include-depend-objs --exclude-self -F dgs_dump[port=''][jack][2018-11-14 17:21:18]: dump database human_resource successfullygs_dump[port=''][jack][2018-11-14 17:21:23]: total time: 4239 ms
  • 示例 示例一:执行gs_dumpall,导出所有数据库的公共全局表空间信息和用户信息(dbadmin用户为管理员用户),导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_globals.sql -p 8000 -h 10.10.10.100 -ggs_dumpall[port=''][2018-11-14 19:06:24]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 19:06:24]: total time: 1150 ms 示例二: 执行gs_dumpall,导出所有数据库的公共全局表空间信息(dbadmin用户为管理员用户),并对导出文件进行加密,导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_tablespace.sql -p 8000 -h 10.10.10.100 -t --with-encryption AES128 --with-key 1212121212121212gs_dumpall[port=''][2018-11-14 19:00:58]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 19:00:58]: total time: 186 ms 示例三:执行gs_dumpall,导出所有数据库的公共全局用户信息(dbadmin用户为管理员用户),导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_user.sql -p 8000 -h 10.10.10.100 -rgs_dumpall[port=''][2018-11-14 19:03:18]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 19:03:18]: total time: 162 ms
  • 示例 示例一:执行gs_dump导出数据,用户jack不具备导出数据库human_resource的权限,而角色role1具备该权限,要实现导出数据库human_resource,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "password";gs_dump -U jack -W password -f /home//backup/MPPDB_backup11.tar -p 8000 -h 10.10.10.100 human_resource --role role1 --rolepassword password -F tgs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfullygs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 4239 ms 示例二:执行gs_dump导出数据,用户jack不具备导出模式public的权限,而角色role1具备该权限,要实现导出模式public,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "1234@abc";gs_dump -U jack -W password -f /home//backup/MPPDB_backup12.tar -p 8000 -h 10.10.10.100 human_resource -n public --role role1 --rolepassword password -F tgs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfullygs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 3278 ms 示例三:执行gs_dumpall导出数据,用户jack不具备导出所有数据库的权限,而角色role1具备该权限,要实现导出所有数据库,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为文本归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "password";gs_dumpall -U jack -W password -f /home//backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 --role role1 --rolepassword passwordgs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: dumpall operation successfulgs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: total time: 6437 ms
  • PostGIS概述 PostGIS Extension依赖的第三方软件需要用户进行单独安装,用户如需使用PostGIS功能,请提交工单或联系技术支持人员提交申请。 如果用户在使用中出现“ERROR:EXTENSION is not yet supported.”这种报错,则表示没有安装PostGIS软件包,请联系技术支持进行获取。 GaussDB(DWS)提供PostGIS Extension(版本为PostGIS-2.4.2)。PostGIS Extension是PostgreSQL的空间数据库扩展,提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。PostGIS Extension完全遵循OpenGIS规范。 GaussDB(DWS)中PostGIS Extension依赖第三方开源软件如下。 Geos 3.6.2 Proj 4.9.2 Json 0.12.1 Libxml2 2.7.1 Gdal 1.11.0 父主题: PostGIS Extension
  • PL/pgSQL语言函数 PL/pgSQL类似于Oracle的PL/SQL,是一种可载入的过程语言。 用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。 SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。 这意味着客户端应用必须发送每一个查询到数据库服务器、等待它被处理、接收并处理结果、做一些计算,然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上,所有这些会引起进程间通信并且将带来网络负担。 通过PL/pgSQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有了一种过程语言的能力并且使SQL更易用,同时能节省的客户端/服务器通信开销。 客户端和服务器之间的额外往返通信被消除。 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。 多轮的查询解析可以被避免。 PL/pgSQL可以使用SQL中所有的数据类型、操作符和函数。 应用PL/pgSQL创建函数的语法为CREATE FUNCTION。正如前面所说,PL/pgSQL类似于Oracle的PL/SQL,是一种可载入的过程语言。其应用方法与存储过程相似,只是存储过程无返回值,函数有返回值。 父主题: 用户自定义函数
  • 存储过程 商业规则和业务逻辑可以通过程序存储在GaussDB(DWS)中,这个程序就是存储过程。 存储过程是SQL,PL/SQL,Java语句的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 存储过程的创建及调用办法请参考CREATE PROCEDURE。 PL/pgSQL语言函数节所提到的PL/pgSQL语言创建的函数与存储过程的应用方法相通。下面各节中,除非特别声明,否则内容通用于存储过程和PL/pgSQL语言函数。 父主题: 存储过程
  • 数据类型转换 数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用GaussDB(DWS)提供的类型转换函数,例如CAST进行数据类型强转。 GaussDB(DWS)数据库常见的隐式类型转换,请参见表1。 GaussDB(DWS)支持的DATE的效限范围是:公元前4713年到公元294276年。 表1 隐式类型转换表 原始数据类型 目标数据类型 备注 CHAR VARCHAR2 - CHAR NUMBER 原数据必须由数字组成。 CHAR DATE 原数据不能超出合法日期范围。 CHAR RAW - CHAR CLOB - VARCHAR2 CHAR - VARCHAR2 NUMBER 原数据必须由数字组成。 VARCHAR2 DATE 原数据不能超出合法日期范围。 VARCHAR2 CLOB - NUMBER CHAR - NUMBER VARCHAR2 - DATE CHAR - DATE VARCHAR2 - RAW CHAR - RAW VARCHAR2 - CLOB CHAR - CLOB VARCHAR2 - CLOB NUMBER 原数据必须由数字组成。 INT4 CHAR - 父主题: 存储过程
  • 结构 PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下: 声明部分:声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数。 DECLARE 不涉及变量声明时声明部分可以没有。 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。 执行部分:过程及SQL语句,程序的主要部分。必选。 BEGIN 执行异常部分:错误处理。可选。 EXCEPTION 结束 END;/ 禁止在PL/SQL块中使用连续的Tab,连续的Tab可能会造成在使用gsql工具带“-r”参数执行PL/SQL块时出现异常。
  • 游标概述 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 当游标作为存储过程的返回值时,如果使用JDBC调用该存储过程,返回的游标将不可用。 游标的使用分为显式游标和隐式游标。对于不同的SQL语句,游标的使用情况不同,详细信息请参见表1。 表1 游标使用情况 SQL语句 游标 非查询语句 隐式的 结果是单行的查询语句 隐式的或显式的 结果是多行的查询语句 显式的 父主题: 游标
  • 系统表和系统视图概述 系统表是GaussDB(DWS)存放结构元数据,是GaussDB(DWS)数据库系统运行控制信息的来源,也是数据库系统的核心组成部分。系统表包含集群安装信息以及GaussDB(DWS)上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。 系统视图提供了查询系统表和访问数据库内部状态的方法。当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图来解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。 三权分立下,非管理员无权查看系统表和视图。非三权分立下,系统表和系统视图要么只对管理员可见,要么对所有用户可见。下面的系统表和视图有些标识了需要管理员权限,这些系统表和视图只有管理员可以查询。 禁止对系统表或系统视图进行增删改等操作,手动对系统表或系统视图的修改或破坏可能会导致系统信息不一致,造成系统控制异常甚至出现集群不可用的情况。 父主题: 系统表和系统视图
  • GS_WLM_INSTANCE_HISTORY GS_WLM_INSTANCE_HISTORY系统表存储与实例(CN或DN)相关的资源使用相关信息。该系统表里每条记录都是对应时间点某实例资源使用情况,包括:内存、CPU核数、磁盘IO、进程物理IO和进程逻辑IO信息。 表1 GS_WLM_INSTANCE_HISTORY字段 名称 类型 描述 instancename text 实例名称。 timestamp timestamp with time zone 时间戳。 used_cpu int 实例使用CPU所占用的百分比。 free_mem int 实例未使用的内存大小,单位MB。 used_mem int 实例已使用的内存大小,单位MB。 io_await real 实例所使用磁盘的io_wait值(10秒均值)。 io_util real 实例所使用磁盘的io_util值(10秒均值)。 disk_read real 实例所使用磁盘的读速率(10秒均值),单位KB/s。 disk_write real 实例所使用磁盘的写速率(10秒均值),单位KB/s。 process_read bigint 实例对应进程从磁盘读数据的读速率(不包括从磁盘pagecache中读取的字节数,10秒均值),单位KB/s。 process_write bigint 实例对应进程向磁盘写数据的写速率(不包括向磁盘pagecache中写入的字节数,10秒均值),单位KB/s。 logical_read bigint CN实例:不统计。 DN实例:该实例在本次统计间隙(10秒)内逻辑读字节速率,单位KB/s。 logical_write bigint CN实例:不统计。 DN实例:该实例在本次统计间隙(10秒)内逻辑写字节速率,单位KB/s。 read_counts bigint CN实例:不统计。 DN实例:该实例在本次统计间隙(10秒)内逻辑读操作次数之和,单位次。 write_counts bigint CN实例:不统计。 DN实例:该实例在本次统计间隙(10秒)内逻辑写操作次数之和,单位次。 父主题: 系统表
  • GS_OBSSCANINFO GS_OBSSCANINFO系统表定义了在云上加速场景中,使用加速集群时扫描OBS数据的运行时信息,每条记录对应一个query中单个OBS外表的运行时信息。 表1 GS_OBSSCANINFO字段 名字 类型 引用 描述 query_id bigint - 查询标识。 user_id text - 执行该查询的数据库用户。 table_name text - OBS外表的表名。 file_type text - 底层数据保存的文件格式。 time_stamp time_stam - 扫描操作开始的时间。 actual_time double - 扫描操作执行时间,单位为秒。 file_scanned bigint - 扫描的文件数量。 data_size double - 扫描的数据量,单位为字节。 billing_info text - 保留字段。 父主题: 系统表
  • GS_WLM_SESSION_INFO GS_WLM_SESSION_INFO系统表显示所有CN执行作业结束后的负载管理记录。此数据是从内核中转储到系统表中的数据。当设置GUC参数enable_resource_record为on时,系统会定时将GS_WLM_SESSION_HISTORY中的记录导入此系统表,开启此功能会占用系统存储空间并对性能有一定影响,不建议用户使用。具体的字段请参考表1。 此系统表的schema是dbms_om。 pg_catalog下存在GS_WLM_SESSION_INFO视图。 父主题: 系统表
  • GS_WLM_USER_RESOURCE_HISTORY GS_WLM_USER_RESOURCE_HISTORY系统表存储与用户使用资源相关的信息,该表在CN和DN上均存有数据。该系统表的每条记录都是对应时间点某用户的资源使用情况,包括:内存、CPU核数、存储空间、临时空间、算子落盘空间、逻辑IO流量、逻辑IO次数和逻辑IO速率信息。其中,内存、CPU、IO相关监控项仅记录用户复杂作业的资源使用情况。 GS_WLM_USER_RESOURCE_HISTORY系统表的数据来源于PG_TOTAL_USER_RESOURCE_INFO视图。 表1 GS_WLM_USER_RESOURCE_HISTORY字段 名称 类型 描述 username text 用户名。 timestamp timestamp with time zone 时间戳。 used_memory int 正在使用的内存大小,单位MB。 total_memory int 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 used_cpu real 正在使用的CPU核数。 total_cpu int 该机器节点上,用户关联控制组的CPU核数总和。 used_space bigint 已使用的存储空间大小,单位KB。 total_space bigint 可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。 used_temp_space bigint 已使用的临时存储空间大小,单位KB。 total_temp_space bigint 可使用的临时存储空间大小,单位KB,值为-1表示未限制最大临时存储空间。 used_spill_space bigint 已使用的算子落盘存储空间大小,单位KB。 total_spill_space bigint 可使用的算子落盘存储空间大小,单位KB,值为-1表示未限制最大算子落盘存储空间。 read_kbytes bigint 监控周期内,读操作的字节流量,单位KB。 write_kbytes bigint 监控周期内,写操作的字节流量,单位KB。 read_counts bigint 监控周期内,读操作的次数,单位次。 write_counts bigint 监控周期内,写操作的次数,单位次。 read_speed real 监控周期内,读操作的字节速率,单位KB/s。 write_speed real 监控周期内,写操作的字节速率,单位KB/s。 父主题: 系统表
  • PG_AGGREGATE PG_AGGREGATE系统表存储与聚集函数有关的信息。PG_AGGREGATE里的每条记录都是一条pg_proc里面的记录的扩展。PG_PROC记录承载该聚集的名字、输入和输出数据类型,以及其它一些和普通函数类似的信息。 表1 PG_AGGREGATE字段 名字 类型 引用 描述 aggfnoid regproc PG_PROC.oid 此聚集函数的PG_PROC OID。 aggtransfn regproc PG_PROC.oid 转换函数。 aggcollectfn regproc PG_PROC.oid 收集函数。 aggfinalfn regproc PG_PROC.oid 最终处理函数(如果没有则为0)。 aggsortop oid PG_OPERATOR.oid 关联排序操作符(如果没有则为0)。 aggtranstype oid PG_TYPE.oid 此聚集函数的内部转换(状态)数据的数据类型。 agginitval text - 转换状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则转换状态值从null开始。 agginitcollect text - 收集状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则收集状态值从null开始。 父主题: 系统表
  • PG_AM PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 表1 PG_AM字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 amname name - 访问方法的名称。 amstrategies smallint - 访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。 amsupport smallint - 访问方法的支持过程个数。 amcanorder boolean - 这种访问方式是否支持通过索引字段值的命令扫描排序。 amcanorderbyop boolean - 这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。 amcanbackward boolean - 访问方式是否支持向后扫描。 amcanunique boolean - 访问方式是否支持唯一索引。 amcanmulticol boolean - 访问方式是否支持多字段索引。 amoptionalkey boolean - 访问方式是否支持第一个索引字段上没有任何约束的扫描。 amsearcharray boolean - 访问方式是否支持ScalarArrayOpExpr搜索。 amsearchnulls boolean - 访问方式是否支持IS NULL/NOT NULL搜索。 amstorage boolean - 允许索引存储的数据类型与列的数据类型是否不同。 amclusterable boolean - 是否允许在一个这种类型的索引上集群。 ampredlocks boolean - 是否允许这种类型的一个索引管理细粒度的谓词锁定。 amkeytype oid PG_TYPE.oid 存储在索引里数据的类型,如果不是一个固定的类型则为0。 aminsert regproc PG_PROC.oid “插入此行”函数。 ambeginscan regproc PG_PROC.oid “准备索引扫描” 函数。 amgettuple regproc PG_PROC.oid “下一个有效行”函数,如果没有则为0。 amgetbitmap regproc PG_PROC.oid “抓取所有的有效行” 函数,如果没有则为0。 amrescan regproc PG_PROC.oid “(重新)开始索引扫描”函数。 amendscan regproc PG_PROC.oid “索引扫描后清理” 函数。 ammarkpos regproc PG_PROC.oid “标记当前扫描位置”函数。 amrestrpos regproc PG_PROC.oid “恢复已标记的扫描位置”函数。 ammerge regproc PG_PROC.oid “归并多个索引对象”函数。 ambuild regproc PG_PROC.oid “建立新索引”函数。 ambuildempty regproc PG_PROC.oid “建立空索引”函数。 ambulkdelete regproc PG_PROC.oid 批量删除函数。 amvacuumcleanup regproc PG_PROC.oid VACUUM后的清理函数。 amcanreturn regproc PG_PROC.oid 检查是否索引支持唯一索引扫描的函数,如果没有则为0。 amcostestimate regproc PG_PROC.oid 估计一个索引扫描开销的函数。 amoptions regproc PG_PROC.oid 用于分析和验证索引的reloptions函数。 父主题: 系统表
共100000条