Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
白日与明月
gbase8s笔记
提交
50c0d6a9
G
gbase8s笔记
项目概览
白日与明月
/
gbase8s笔记
通知
31
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gbase8s笔记
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
50c0d6a9
编写于
11月 26, 2021
作者:
Y
youxiangyang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
gbase8s 数据导出
上级
cc537c69
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
239 addition
and
0 deletion
+239
-0
高级运维/数据迁移.md
高级运维/数据迁移.md
+214
-0
高级运维/日期时间格式表.md
高级运维/日期时间格式表.md
+25
-0
未找到文件。
高级运维/数据迁移.md
0 → 100644
浏览文件 @
50c0d6a9
# Gbase8s 数据迁移
[toc]
Note:
-
数据迁移分类
-
按格式分类: 文本格式、二进制格式
-
按数据范围:整库迁移、单表迁移
-
按用途看:自用、第三方使用
-
数据迁移中常需要考虑的问题:
-
行分隔符
-
列分隔符
-
日期时间格式
-
汉字乱码
-
数据迁移方法
-
unload / load
-
dbload
-
dbexport / dbimport
-
onunload
\
onload
-
external table
## 迁移工具对比
| 数据迁移方法 | 运行方式 | 数据格式 | 数据范围 | 数据用途 |
| ----------------- | -------- | ---------- | -------- | ----------- |
| unload/load | SQL | 文本数据 | 单表 | 自用/第三方 |
| dbexport/dbimport | 命令行 | 文本数据 | 库 | 自用 |
| dbload | 命令行 | 文本数据 | 多表 | 自用 |
| onunload/onload | 命令行 | 二进制数据 | 库/表 | 自用 |
| external table | SQL | 文本数据 | 单表 | 自用/第三方 |
### unload / load
**unload 语法**
:
```
unload to 文件名 [delimiter 分隔符]
select <*|columns> from table\view\synonym;
```
备注:
-
支持单表和夺标关联
-
默认的列分隔符是【|】
-
GBase 8s最多支持4个字符做为列分隔符,超过4个时分报错
```
sql
unload
to
"/data/test.unl"
delimiter
','
select
*
from
t_test
;
-- 设置导出的时间和文字
-- export CLIENT_LOCAL=en_US.UTF8
-- export GL_DATE="%iY%m%d"
unload
to
"/data/test/unl"
select
t1
.
*
,
t2
.
*
from
tb1
t1
,
tb2
t2
where
t1
.
id
=
t2
.
id
;
```
**load语法**
```
sql
load
from
"filename"
[
delimiter
"分隔符"
]
insert
into
tableName
|
synonym_name
|
view_name
[
columns
]
-- 分隔符默认是|
-- columns: 导入表的字段列表,默认为数据库表的字段顺序
```
```
sql
load
from
"/data/test.db"
delimiter
","
insert
into
t_test
;
-- 多表,不能直接塞进去,需要转换喜爱
```
### dbload
dbload语法:
```
sql
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 语法
```
sql
file
"filename"
delimiter
"分隔符"
nfields
insert
into
tablename
[(
col1
,
col2
...)
values
(
f1
,
f2
,..)];
-- file_name:指定要导入的文件名称,可以为绝对路径和相对路径。
-- delimiter_string:数据文件使用的列分隔符。
-- nfields:数据文件中,每行的列数。
-- table_name:要导入的表的名称。
-- col1,col2...:表的列名称,多个列用逗号分隔。
-- f01,f02...:数据文件中的列数据编号,从01开始编号,多个编号用逗号分隔。
```
```
sql
file
'/home/gbasedbt/train/data/unload_03.unl'
delimiter
'.'
4
;
insert
into
t_employee_00
;
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
);
```
### 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:测试是否对分片表有特殊作用
```
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:指定要导入数据所在的目录
```
### onunload \ onload
onunload
```
sql
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
主要用于使用磁带设备,当使用磁盘设备时,可以忽略。
导出数据为二进制格式,只能用于兼容硬件上的兼容数据库版本的数据导入。
该方式使用限制较严格,真实场景中使用较少。
```
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:指定导入的表名称。
```
### 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:
```
高级运维/日期时间格式表.md
0 → 100644
浏览文件 @
50c0d6a9
# Gbase8s日期格式表
| 格式化符 | 说明 |
| -------- | ----------------------------------------- |
| %a | 星期的短格式表示 |
| %A | 星期的完整格式表示 |
| %b | 月份的短格式表示 |
| %B | 月份的完整格式表示 |
| %C | 世纪的表示,通常是年值除以100后的整数部分 |
| %d | 天(01-31) |
| %D | 相当于格式:%m/%d/%y |
| %e | 天(1-31) |
| %h | 和%b相同 |
| %H | 小时(00-24) |
| %iy | 两位年(00-99) |
| %iY | 四位年(0000-9999) |
| %m | 月(01-12) |
| %M | 分钟(00-59) |
| %n | 换行符 |
| %S | 秒(00-59) |
| %t | 制表符 |
| %w | 星期的数字表示(0-6) |
| %y | 两位年(00-99) |
| %Y | 四位年(0000-9999) |
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录