登录 gbase 数据库
gccli -ugbase -p1
指定需要导出表数据的数据库如 “test” 数据库
use test;
需要先在本地创建存放数据的路径
mkdir /home/gbase/dcfile
如果登录数据库的用户不具有在这个文件夹下创建文件的权限将会报错
执行导出数据的 sql 命令
select * from cs1 into outfile ‘/home/gbase/dcfile/cs1.txt’;
可选参数(经过测试必须大写):
NULL_VALU:可以将控制转换成指定的字符如果不指定这个参数导出的数据有空值的话为 “
\n“指定为”“双引号内什么都不加则为空,加任意的符号则为任意的符号
LINES TERMINATED BY:行分隔符,支持多个字符,默认为 “\n”。
OUTFILEMODE BY: 导出方式有两种,local 是导出到本地也是默认的导出方式,hdfs:导出的是 hdfs 文件。
OUTFILEMODE BY HDFS FILECOUNT 3:这个参数是选择数据导出的文件个数值为 3. 但是只在导出 hdfs 模式中生效,本地不生效。
FILESIZE 100:这个参数是指定导出数据的文件大小,在数字后可以指定是 KB,MB,默认后缀名为 “_p1“开头。
WRITEMODE BY NORMAL:导出格式为. gz 压缩格式的文件。
fields terminated by ‘|’ with head; 导出的文件含表头就是字段,以 “|“为分隔符,并且数据也会以”|“当分隔符
在 gbase 中有个关于导出数据的参数 gbase_export_directory 默认值为 “1”
以上面的语句举例,当此参数为 1 时,会自动在 dcfile 文件夹下创建一个名为”cs1.txt” 的文件夹,在这个文件夹下会有个 “cs1.txt“的文件这个文件才是真正存放导出数据的文件
当此参数为 0 时,不会创建 “cs1.txt 文件夹,会直接创建“cs1.txt” 文件。
且这个参数的设置只在本地或者 hdfs 的导出中有效,不支持 rmt 的方式
更改此参数的方法:
可以登录数据库后输入
set gbase_export_directory = 0; 或者等于 1 的方式
这种方式是临时的如果重启主机或者重新登录数据库就会失效
也可以在 / opt/gcluster/config/gbase_8a_gcluster.cnf 文件中直接写入参数,这样的方式是永久的。
远程登录导出数据
这种方式一般适用于非 gbase 集群中主机的数据导出,需要先在主机中安装 gbase 客户端。
创建存放数据文件的文件夹,然后正常登录 gbase 数据库,选择表所在的数据库。
执行 sql 语句为:
rmt:select * from cs1 into outfile ‘/home/gbase/dcfile/cs1.txt’;
需要注意的是 rmt 与 select 语句中不能有空格
文件同名报错
语法不正确报错