GBASE南大通用GBase 8s数据库- 数据迁移(2)

GBASE南大通用GBase 8s数据库数据迁移 

2、dbload

dbload语法

dbload [-d db_name] [-c cmd_file] [-l log_file] [-e errors] [-n num_rows]
	[-i i_skip] [-s] [-p] [-r | -k] [-X]

db_name:指定要加载数据的数据库名称
cmd_file:指定包含加载命令的文件路径
log_file:指定日志文件,其中记录不能正确加载的数据
errors:指定最多可以有多少行数据错误,超过指定的行数后,加载任务失败
num_rows:指定多少条记录执行一次提交
s:指定只做语法检查,不进行实际的数据加载
i_skip:指定跳过多少行数据,再进行加载,可用于跳过数据中的标题部分
r:加载数据时,不对表加锁
k:加载数据时,对表加排它锁

command file语法

file 'file_name' delimiter 'delimiter_string' nfields
insert into table_name [(col1,col2,...) values (f01,f02,…)]

file_name:指定要导入的文件名称,可以为绝对路径和相对路径。
delimiter_string:数据文件使用的列分隔符。
nfields:数据文件中,每行的列数。
table_name:要导入的表的名称。
col1,col2...:表的列名称,多个列用逗号分隔。
f01,f02...:数据文件中的列数据编号,从01开始编号,多个编号用逗号分隔。

使用dbload一次导入多个表数据的方法。

[gbasedbt@train dbload]$ cat dept_employee.ctl 
file '/home/gbasedbt/train/data/unload_01.unl' delimiter ',' 2;
insert into t_dept_00;

file '/home/gbasedbt/train/data/unload_03.unl' delimiter '.' 4;
insert into t_employee_00;

使用dbload导入数据文件与表定义格式不一致的数据。

[gbasedbt@train dbload]$ cat employee.ctl 
file '/home/gbasedbt/train/tmp/unload_02.unl' delimiter '|' 5;
insert into t_employee_02(f_employeeid, f_employeename, f_deptid, f_birthdate) values(f01, f02, f03, f05);
[gbasedbt@train dbload]$ 

3、dbexport/dbimport

dbexport语法

dbexport <database> [-X] [-c] [-q] [-d] [-ss [-si]] [-ext]
  [{ -o <dir> | -t <tapedev> -b <blksz> -s <tapesz> [-f <sql-command-file>] }] [-nw]
  [-no-data-tables[=table name{,table name}]]
  [-no-data-tables-accessmethods[=access method name{,access method name}]]

database:指定要导出全部表数据的数据库名称
no-data-tables:指定哪些表不导出数据
o:指定导出的数据保存在哪个操作系统的目录中
ss:测试是否对分片表有特殊作用

导出数据库

dbexport mydb -o .

dbimport语法

dbimport <database> [-X] [-c] [-q] [-ext] [-d <dbspace>]
  [-l [{ buffered }] [-ansi]] [-ci] [-nv] [-D]
  [{ -i <dir> | -t <tapedev> [ -b <blksz> -s <tapesz> ] [-f <script-file>] }]

database:指定要导入全部表数据的数据库名称
d:指定数据库导入到哪个数据库空间中
nv:不对引用约束进行校验
i:指定要导入数据所在的目录

导入数据库。

dbimport mydb -d datadbs1 -i .

4、onunload/onload

onunload语法

onunload [-l] [-t <tape_device>] [-b <block size>] [-s <tape size>]
		<db_name>[:[<owner>.]<table_name>]

tape_device:保存数据的磁带设备。当使用磁盘时,需创建一个空文件并指定。
db_name:要导出数据的数据库名称。如果不指定表名称,则导出全库数据。
table_name:当需要导出表数据时,指定表名称。

说明:
参数b,参数s和参数l主要用于使用磁带设备,当使用磁盘设备时,可以忽略。
导出数据为二进制格式,只能用于兼容硬件上的兼容数据库版本的数据导入。
该方式使用限制较严格,真实场景中使用较少。

卸载数据库

touch mydb.bin
onunload -t mydb.bin mydb

卸载表

touch mytable.bin
onunload -t mytable.bin mydb:t_user

5、onload语法

onload [-l] [-t <tape_device>] [-b <block size>] [-s <tape size>]
  [-d <data_dbs>] <db_name>[:[<owner>.]<table_name>]
  [{-i <old index name> <new index name>}]
  [{-fd old-DBspace-name new-DBspace-name}]
  [{-fi index-name old-DBspace-name new-DBspace-name}]
  [{-c <old constraint name> <new constraint name>}]

tape_device:保存数据的磁带设备或操作系统文件目录。
data_dbs:指定数据导入时,使用的数据库空间。
db_name:指定导入的数据库名称。
table_name:指定导入的表名称。

加载数据库

onload -t mydb.bin -d datadbs1 mydb

加载表

onload -t mytable.bin -d datadbs1 mydb:t_user

external table

external table语法

create external table table_name([column definition | sameas table_template])
using (
datafiles ('disk:/textfile'),
format 'delimited',
delimiter 'delimiter_string'
);

table_name:要创建的外部表名称。
table_template:可以指定一个模板,以该表的列定义创建一个外部表。
datafiles:指定外部表使用的数据文件。
format:
delimiter:

创建外部表

[gbasedbt@train external]$ cat create.sql 
-- export GL_DATE="%d.%m.%iY"

create external table t_ext_data_01(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date)
using(
datafiles ('disk:/home/gbasedbt/train/data/ext_data.unl'),
format 'delimited',
delimiter '.'
);

select * from t_ext_data_01;
[gbasedbt@train external]$ 

附录

数据准备

[gbasedbt@train train]$ cat table_prepare.sql 
-- database mydb;
create table t_dept_00(f_deptid int, f_deptname varchar(50));
create table t_dept_01(f_deptid int, f_deptname varchar(50));
create table t_employee_00(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_01(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_02(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_03(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_04(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_05(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_06(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_07(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_08(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
create table t_employee_09(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);
[gbasedbt@train train]$ 
[gbasedbt@train train]$ cat data_prepare.sql 
-- export GL_DATE="%iY-%m-%d"

create table t_dept(f_deptid int, f_deptname varchar(50));

insert into t_dept values(1,'Dev');
insert into t_dept values(2,'Test');
insert into t_dept values(3,'Market');

create table t_employee(f_employeeid int, f_deptid int, f_employeename varchar(50), f_birthdate date);

insert into t_employee values(1,1,'Bill','1983-06-01');
insert into t_employee values(2,1,'John','1985-12-25');
insert into t_employee values(3,2,'Mary','1987-10-10');
insert into t_employee values(4,3,'Kate','1989-11-11');
insert into t_employee values(5,1,'Will
Smith','1981-02-28');
[gbasedbt@train train]$
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值