返回首页

gbase数据、南大通用产品文档:GBase8a导出非登录用户的表数据

更新日期:2024年09月11日


orato8a 导出数据时,将--user 参数指定的内容称为登录用户,导出数据时,以
该参数指定的用户名及其他相关连接参数登录oracle 数据库进行数据导出;

如果想要导出非登录用户创建的表的数据,
则还需要通过--owner_name 参数指
定创建表的用户的用户名;

假设我们要用expdata 用户导出ssbm 用户创建的表message,则首先我们需要
对expdata 用户授予对dba_extents 和dba_objects 表的SELECT 权限,orato8a 导出
数据的登录用户都必须有对这两个表的SELECT 权限,然后还需要对expdata 用户
授予对message 表的SELECT 权限。
步骤1
授权方法,首先以系统管理员身份创建一个普通用户expdata:
SQL> conn /as sysdba;
Connected.
SQL> create user expdata identified by hello;
User created.
SQL> alter user expdata account unlock;

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
553
User altered.
SQL> grant create session to expdata;
Grant succeeded.
步骤2
然后仍然使用系统管理员身份,对expdata 授予对dba_extents 和dba_objects 表的
select 权限:
SQL> grant select on dba_extents to expdata;
Grant succeeded.
SQL> grant select on dba_objects to expdata;
Grant succeeded.
步骤3
最后还要用ssbm 用户对expdata 用户授予对message 表的select 权限:
SQL> conn ssbm/ssbm;
Connected.
SQL> grant select on message to expdata;
步骤4
导出,方法为:
$ ./orato8a --user='expdata/hello@maya' --table_name='message' --file='./message.tbl'
--format=3 --field='@' --owner_name="ssbm"
export columns: 3
export rows: 10
export time: 0 sec
process ok!
$ cat message.tbl
1@Tom@I am Tom
2@小明@HHHH\"KKKK
3@Peter@Hello!Hello!
4@Yama@send mail
5@Hellen@\N
6@\N@\N
7@Seven@a book store

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
554
8@MMEE@yes
9@George@Thank you.
10@Lastman@no message

函数说明
TRUNC 函数返回以指定元素格式截去一部分的日期值。
表5- 26 参数说明
参数名称


date/datetime
为必选参数,表示输入的一个日期值。
format
可选参数,表示日期格式,用以指定的元素格式来截去输入
的日期值。如果省略此参数,则由最近的日期截去。
表5- 27 format 支持类型说明




year
返回当年第一天
yyyy
返回当年第一天
month
返回当月第一天
mm
返回当月第一天
dd
返回当天的日期
hh
得到当天凌晨0 点0 分0 秒的日期
mi
得到当天凌晨0 点0 分0 秒的日期

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
826
示例
示例1:返回执行当年的第一天。
gbase> SELECT TRUNC(current_date,'year') FROM dual;
+----------------------------+
| TRUNC(current_date,'year') |
+----------------------------+
| 2020-01-01
|
+----------------------------+
1 row in set
示例2:返回执行当年的第一天。
gbase> SELECT TRUNC(current_date,'yyyy') FROM dual;
+----------------------------+
| TRUNC(current_date,'yyyy') |
+----------------------------+
| 2020-01-01
|
+----------------------------+
1 row in set
示例3:返回执行当月的第一天。
gbase> SELECT TRUNC(current_date,'mm') FROM dual;
+--------------------------+
| TRUNC(current_date,'mm') |
+--------------------------+
| 2020-04-01
|
+--------------------------+
1 row in set
示例4:返回执行当天的日期。
gbase> SELECT TRUNC(current_date,'dd') FROM dual;
+--------------------------+
| TRUNC(current_date,'dd') |
+--------------------------+
| 2020-04-02
|
+--------------------------+
1 row in set
示例5:得到当天凌晨0 点0 分0 秒的日期。
gbase> SELECT TRUNC(current_date,'hh') FROM dual;
+--------------------------+
| TRUNC(current_date,'hh') |
+--------------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
827
| 2020-04-02 00:00:00
|
+--------------------------+
1 row in set
示例6:得到当天凌晨0 点0 分0 秒的日期。
gbase> SELECT TRUNC(current_date,'mi') FROM dual;
+--------------------------+
| TRUNC(current_date,'mi') |
+--------------------------+
| 2020-04-02 00:00:00
|
+--------------------------+
1 row in set


GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
32