GBase8s 为解决第三方数据库无风险迁移到 GBase8s 数据库提供全面解决方案,GBase8s 产品本身对各类迁移工具的完美支持,更进一步保障数据迁移成功率,提升数据迁移工作效率。GBase8s 对主流的数据库迁移工具支持如下:
支持数据库结构迁移工具:MTK
支持数据迁移工具:Kettle
支持增量数据迁移工具:IBMCDC、OracleGolderGate、Informatica
数据迁移分类
数据格式
数据范围
数据用途
数据格式
按数据格式分类,可分为:
文本格式
二进制格式。
数据范围
按数据范围分类,可分为:
整库迁移
单表迁移
数据用途
按数据用途分类,可分为:
产品自己使用
提供给第三方数据
数据迁移问题
行分隔符
列分隔符
日期时间格式
汉字乱码
数据包含行分隔符
默认的行分隔符为\n(Linux)或\r\n(Windows)。对于从Windows系统生成的数据需要在Linux系统导入数据时,可以使用dos2unix工具删除\r。
对于需要导入数据的系统,如果导入程序只支持逐行解析数据并导入,则需要在生成数据时,对数据中的换行符进行转义或删除。对字符进行转义会使数据产生膨胀,在导入数据时,可根据实际情况对目标字段进行加长处理。
对于一些数据库系统,通过定义一些规则来解决数据中包含换行符问题,如GBase 8s使用在换行符前增加一个\表示这行数据未完成,下一行仍然是本行数据的延续,来解决数据中包含换行符的问题。基于特定规则的换行符处理方式,只能在本系统内使用,无法提供数据给第三方系统。
部分厂商采用自定义换行符方法,解决数据中包含\n问题。用户可以指定不可见的二进制字符作为数据的换行符。
数据包含列分隔符
用户常指定一个字符,做为列数据的分隔符,如逗号或管道符。对于数据中全部为数值字段的数据,这种方式非常有效和高效。
对于迁移的数据包含文本数据时,数据中可能包含任意的单个可见字符,指定单个字符作为列分隔符时,容易出现部分数据无法导入现象。通常迁移工具需要支持转义,将数据中的列分隔符进行转义,以区别数据中的列分隔符和实际的列分隔符。
一些工具支持不可见字符或多个字符一起作为列分隔符。这种方案通常不需要对数据中的字符进行转义处理,适用于不同数据库系统间的数据迁移。
数据中的日期时间格式不匹配
格式化符 | 说明 |
---|---|
%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) |
汉字乱码
不同的汉字编码格式,是产生乱码的主要原因。
数据截断可能导致部分数据产生乱码。
数据迁移方法
数据迁移工具
- unload/load
- dbload
- dbexport/dbimport
- gunload/gload
- external table
数据迁移工具对比
数据迁移方法 | 运行方式 | 数据格式 | 数据范围 | 数据用途 |
---|---|---|---|---|
unload/load | SQL | 文本数据 | 单表 | 自用/第三方 |
dbexport/dbimport | 命令行 | 文本数据 | 库 | 自用 |
dbload | 命令行 | 文本数据 | 多表 | 自用 |
gunload/gload | 命令行 | 二进制数据 | 库/表 | 自用 |
external table | SQL | 文本数据 | 单表 | 自用/第三方 |
unload/load
unload语法
unload to 'file_name' [delimiter 'delimiter_string']
select <* | columns> from <table_