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

南大通用GBase8s数据库常用的数据导入和导出工具和基本用法

原创 小小亮 2021-03-25
5132

一. Unload/load

Unload/load是最常用的简单的数据导入、导出工具,支持的数据格式以固定分隔符(如”|”为默认的分隔符)分隔的文本文件。Unload/load以SQL语句的方式来执行,如在dbaccess中执行,具体语法如下:

1.Unload数据导出

Unload to ‘filename’ [delimiter ‘delimiter’]  select statement
复制

其中filename可以是全路径或者相对路径文件名;delimiter可选,默认为“|”;select项为SQL子句,可以是任何形式的SQL语句,这一特征也是unload工具的优势,我们可以利用unload导出任意SQL语句执行的返回结果到文本文件中。
示例如下:

Unload to ‘/tmp/unload.log’ delimiter ‘:’ select * from t1;
复制

2.Load数据导入

Load from ‘filename’ delimiter ‘delimiter’ insert into tablename/synonymname/viewname(column)
复制

示例如下:

Load from ‘/tmp/unload.log’ delimiter ‘:’ insert into t1;
复制

二. Dbload

Dbload拥有容错机制,可以重复导入数据,保持已有数据不变,只增加新增记录;还可以将导入失败的数据记录到指定文件中,帮助用户快速找到有问题的数据。

Dbload的常用命令参数如下:

Dbload [-d dbname] [-c cfilename] [-l logfile] [-n nnum]
-d:数据库名称
-c:命令文件的名称(也叫作控制文件的名称)
-l:保存导入过程中失败的记录
-n:批量提交记录数定义

其中,控制文件的语法为:

FILE filename DELIMITER ‘|’ nfields
INSERT INTO tabname [(column) values(f01,f02,…)]
复制

Tabbane定义导入的目录表,后面的[(column) values]为可选项,f01为文件的第一列,以此类推。

以下例子为像数据库demodb中的表tab导入数据,命令文件为load_tab.ctl,日志文件为error.log,每次检查10000行数据,数据文件为tab.unl,每行数据有14个字段:

Dbload –d demodb –c load_tab.ctl –l error.log –n 10000
复制

其中控制文件load_tab.ctl的内容为:

File ‘tab.unl’ delimiter ‘|’ 14;
Insert into tab;
复制

三.Dbexport/dbimport

在进行数据级别的迁移时,可以采用dbexport/dbimport来完成。

  1. Dbexport
    导出数据库中所有对象的模式脚本和表数据文件,在该模式脚本中包含表等的创建脚本,同时包含了导出的表数据文件的信息。
    示例如下:
Dbexport dbname –o dirname
Dbname:数据库名
复制

-o:指定存储ASCII文件和模式文件的目录名

  1. Dbimport
    根据模式脚本进行导入,在导入过程中首先模式脚本创建对象,导入相应数据的过程类似dbload过程。
    示例如下:
Dbimport dbname –i dirname
Dbname:数据库名
复制

-i:指定存储ASCII文件和模式文件的目录名,以便dbimport查找

四.扩展表/外部表

外部表就是独立于gbase8s的一个或者多个文件,gbase8s数据库引擎提供对文件的SQL接口访问。通过像外部表插入数据或者从外部表查询数据的方式,实现数据导入导出机制。

1. 创建外部表

Create external table <tabname> <column_options>
Using (datafiles (datafiles), <table_options>
复制

Column_options:通常用来定义外部表的字段属性
Datafiles:用来指定external table对应在磁盘上的多个文件或者pipe信息;其中DISK用来指定文件,PIPE用于指定pipe
Table_options:控制属性,如分隔符

示例如下:

Create external table exttab(id int. col int, col1 varchar(20)) using (DATAFILES(“DISK:/tmp/exttab.dat”),delimiter ‘|’); 
复制

2. 导出数据

首先要求待导出表的数据格式与对应的外部表一致,通过类似如下语法来导出数据:

Insert into exttab select * from t1;
复制

3. 导入数据

导入数据语法与导出数据语法类型,只是查询表和insert目标表正好相反,如下:

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

评论