暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s 数据导入和导出

孤独剑 2022-03-21
388

在进行数据库迁移、数据库表备份、表重建以及批量数据加载时,我们经常希望数据

处理过程能更快点。特别是在 DBA 在线进行表重建的过程中,要求重建时间窗口最少。

这里将介绍如何在不同的场景下选择合适的 GBase 8s 数据加载工具,以及如何合理地使用

这些工具。

unload/load

unload/load 是最常使用的最简单的数据导入、导出工具,支持的数据格式为以固定分

隔符(如“|”为默认的分隔符)分隔的文本文件。

unload 数据导出

使用方法如下:

UNLOAD TO 'filename' [DELIMITER 'delimiter'] SELECT Statement

其中 filename 可以为全路径或者相对路径文件名;DELIMITER 选项,定义数据列分

隔符,默认为“|”;SELECT 项为 SQL 子句,可以是任何形式的 SQL 语句,这一特征也是 unload 工具的优势,我们可以利用 unload 导出任意 SQL 语句执行的返回结果到文本文件中。

以下例子为使用 unload 进行数据导出:

unload to '/data/t_customer0.unl' select * from t_customer

可以通过提高抽取数据的 SQL 语句的执行性能来提高 unload 导出数据的性能。对于包含过滤条件等较为复杂的 SQL 语句,我们可以通过查看其执行计划,确定是否需要进行优化。如果导出数据较大,则在可以利用 PDQ 的情况下,设置 PDQ 的优先级,多线程并发执行 SELECT,以加快 SQL 的执行速度。另外,我们通常使用 Light Scan 来提高速度。



load 数据导入

Load 是一种快速而简单的数据导入工具

Load From 'filename' Delimiter 'delimiter'

Insert Into Tablename/SynonymName/ViewName(column);

其中 delimiter 定义分隔符,默认为“|”。另外,可以根据数据文件格式指定相应的字段信息。

以下例子为使用 load 进行数据导入:

Load from '/opt/data.unl' insert into tab1;

Load from './data.unl' insert into tabl(c1,c2,c3);

Load from '/opt/data.unl' Delimiter '|' Insert into tab1;

如何提高 load 数据导入的速度?若要导入较大数量的数据(例如导入 100 万记录),则一般可以通过取消表的日志、临时使索引失效及 PDQ 三种途径,其本质上都加速了 insert记录的性能。

通过语句 alter table tabname type(raw)将表的日志取消,使得在数据导入的过程中,对表的 DML 语句不再记录日志,以获取较高的性能改善。在导入完成后,可以通过语句alter table tabname type(standard)修改为标准的模式。

暂时取消索引,可以在导入过程中减少索引变化所带来的开销,一般只在导入记录非常大或者重建表的过程中考虑。

另外,对于分片表,可以通过设置 PDQ 来提高并行处理能力以及导入性能。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论