pysx0503
作者pysx0503·2020-04-17 21:50
系统工程师·第十区。散人

GBase 8a MPP Cluster 数据抽取工具手册

字数 65689阅读 2233评论 0赞 3

GBase 8a MPP Cluster (集群)
数据抽取工具手册
GBase 8a MPP Cluster 数据抽取工具手册,南大通用数据技术股份有限公司
GBase 版权所有©2004-2017,保留所有权利。
版权声明
本文档所涉及的软件著作权、版权和知识产权已依法进行了相关注册、登记,由南大通用数据
技术股份有限公司合法拥有,受《中华人民共和国著作权法》、《计算机软件保护条例》、《知识
产权保护条例》和相关国际版权条约、法律、法规以及其它知识产权法律和条约的保护。未经
授权许可,不得非法使用。
免责声明
本文档包含的南大通用公司的版权信息由南大通用公司合法拥有,受法律的保护,南大通用公
司对本文档可能涉及到的非南大通用公司的信息不承担任何责任。在法律允许的范围内,您可
以查阅,并仅能够在《中华人民共和国著作权法》规定的合法范围内复制和打印本文档。任何
单位和个人未经南大通用公司书面授权许可,不得使用、修改、再发布本文档的任何部分和内
容,否则将视为侵权,南大通用公司具有依法追究其责任的权利。
本文档中包含的信息如有更新,恕不另行通知。您对本文档的任何问题,可直接向南大通用数
据技术股份有限公司告知或查询。
未经本公司明确授予的任何权利均予保留。
通讯方式
南大通用数据技术股份有限公司
天津华苑产业区海泰发展六道 6 号海泰绿色产业基地 J 座(300384)
电话:400-013-9696 邮箱:info@gbase.cn
商标声明
是南大通用数据技术股份有限公司向中华人民共和国国家商标局申请注册的注册
商标,注册商标专用权由南大通用公司合法拥有,受法律保护。未经南大通用公司书面许可,
任何单位及个人不得以任何方式或理由对该商标的任何部分进行使用、复制、修改、传播、抄
录或与其它产品捆绑使用销售。凡侵犯南大通用公司商标权的,南大通用公司将依法追究其法
律责任。
GBase 8a MPP Cluster 数据抽取工具手册
南大通用数据技术股份有限公司 I
目 录
前言 ............................................................. 1
手册简介 ..................................................... 1
公约 ......................................................... 2
1 数据抽取与加载的关系 ......................................... 3
2 文件格式的说明 ............................................... 5
2.1 文本格式 ............................................. 5
2.2 C转义符的规则 ........................................ 5
3 orato8a 工具使用 .............................................. 6
3.1 oracle 客户端的安装 ................................... 6
3.1.1.1 获取安装文件 ................................ 6
3.1.1.2 创建用户 .................................... 7
3.1.1.3 创建目录 .................................... 7
3.1.1.4 拷贝并修改 tnsnames.ora 文件 .................. 7
3.1.1.5 安装客户端的 rpm 包 ......................... 10
3.1.1.6 配置客户端用户的.bash_profile 文件 .......... 11
3.1.1.7 测试连接 oracle ............................. 12
3.2 Hadoop 生态环境搭建 .................................. 14
3.2.1 HDFS 部署 ........................................ 14
3.2.1.1 Hadoop 集群环境准备 ......................... 14
3.2.1.2 主机名配置 ................................. 15
3.2.1.3 目录规划 ................................... 16
3.2.1.4 准备 Hadoop ................................. 16
3.2.1.5 配置 hadoop-env.sh .......................... 17
3.2.1.6 配置 core-site.xml .......................... 17
3.2.1.7 配置 hdfs-site.xml .......................... 18
3.2.1.8 配置 Masters 和 Slaves ....................... 19
3.2.1.9 格式化 NameNode ............................. 19
3.2.1.10 启动 HDFS .................................. 20
3.2.1.11 停止 HDFS .................................. 20
3.2.2 ZooKeeper 部署 ................................... 20
3.2.2.1 准备 ZooKeeper .............................. 21
3.2.2.2 配置 zoo.cfg ................................ 21
3.2.2.3 启动 ZooKeeper .............................. 22
3.2.2.4 停止 ZooKeeper .............................. 22
3.2.3 HBase 部署 ....................................... 22
GBase 8a MPP Cluster 数据抽取工具手册
II 南大通用数据技术股份有限公司
3.2.3.1 准备 HBase ................................. 22
3.2.3.2 配置 hbase-env.sh .......................... 22
3.2.3.3 配置 hbase-site.xml ........................ 23
3.2.3.4 配置 regionservers ......................... 24
3.2.3.5 启动 HBase ................................. 25
3.2.3.6 停止 HBase ................................. 25
3.3 orato8a 工具简介 ..................................... 26
3.3.1 简介 ............................................ 26
3.3.2 安装文件 ........................................ 26
3.3.3 获取安装文件并解压安装 .......................... 26
3.3.4 语法格式 ........................................ 27
3.3.5 参数说明 ........................................ 31
3.3.5.1 user ....................................... 31
3.3.5.2 query ...................................... 31
3.3.5.3 table_name ................................. 32
3.3.5.4 owner ...................................... 32
3.3.5.5 file ....................................... 33
3.3.5.6 format ..................................... 34
3.3.5.7 field ...................................... 34
3.3.5.8 string_qualifier ........................... 35
3.3.5.9 line_separator ............................. 36
3.3.5.10 null_value ................................ 37
3.3.5.11 parallel .................................. 37
3.3.5.12 blob_conf ................................. 38
3.3.5.13 task_number ............................... 40
3.3.5.14 table_fields .............................. 41
3.3.5.15 gbase_table_fields......................... 41
3.3.5.16 gbase_db_name ............................. 42
3.3.5.17 gbase_table_name .......................... 42
3.3.5.18 gbase_autocommit .......................... 43
3.3.5.19 gbase_host ................................ 43
3.3.5.20 gbase_user ................................ 44
3.3.5.21 gbase_password ............................ 45
3.3.5.22 gbase_socket .............................. 45
3.3.5.23 gbase_port ................................ 46
3.3.5.24 cipher .................................... 46
3.3.5.25 use_cipher ................................ 47
GBase 8a MPP Cluster 数据抽取工具手册
南大通用数据技术股份有限公司 III
3.3.5.26 skip_blob .................................. 47
3.3.5.27 encoding ................................... 48
3.3.5.28 help....................................... 49
3.3.5.29 version .................................... 49
3.3.6 示例说明 ........................................ 49
3.3.6.1 并行方法导出全表数据 ....................... 50
3.3.6.2 设定字段包围符的示例 ....................... 51
3.3.6.2.1 设定可见字符为字段包围符 ....................................................................... 51
3.3.6.2.2 使用转义字符设定字段包围符 ................................................................... 52
3.3.6.2.3 使用十六进制方式设定字段包围符 ........................................................... 53
3.3.6.2.4 导出数据中包含字段包围符 ....................................................................... 54
3.3.6.3 设定行分隔符的示例 ......................... 55
3.3.6.3.1 设定可见字符为行分隔符 ........................................................................... 55
3.3.6.3.2 使用转义字符设定行分隔符 ....................................................................... 56
3.3.6.3.3 使用十六进制方式设定行分隔符 ............................................................... 56
3.3.6.4 设定 NULL 值的示例 .......................... 58
3.3.6.4.1 设定可见字符串表示 NULL 值 .................................................................. 58
3.3.6.4.2 使用转义字符设定 NULL 值....................................................................... 59
3.3.6.4.3 使用十六进制方式设定 NULL 值 .............................................................. 60
3.3.6.5 导出非登录用户的表数据 ..................... 61
3.3.6.6 导出含 clob 或 blob 类型字段的表数据 .......... 63
3.3.6.7 将 oracle中的数据以不落地方式直接导入到GBase 8a
中 63
4 db2to8a 工具使用 ............................................. 65
4.1.1 简介 ................................................ 65
4.1.2 安装文件 ............................................ 65
4.1.3 获取安装文件并解压安装 ............................... 65
4.1.4 语法格式 ............................................ 66
4.1.5 参数说明 ............................................ 68
4.1.5.1 db_name ......................................... 68
4.1.5.2 user ............................................ 69
4.1.5.3 password ........................................ 69
4.1.5.4 query ........................................... 70
4.1.5.5 file ............................................ 70
4.1.5.6 format .......................................... 71
4.1.5.7 string_qualifier ................................. 72
4.1.5.8 field ........................................... 72
GBase 8a MPP Cluster 数据抽取工具手册
IV 南大通用数据技术股份有限公司
4.1.5.9 line_separator .................................. 73
4.1.5.10 null_value .................................... 74
4.1.5.11 help .......................................... 74
4.1.6 示例说明 ............................................ 75
4.1.6.1 设定字段包围符的示例 ............................ 75
4.1.6.2 导出数据中包含包围符 ....................... 75
4.1.6.3 设定为不可见字符的包围符 ................... 76
4.1.6.4 导出数据中不包含所设定的包围符(1) ........ 77
4.1.6.5 导出数据中不包含所设定的包围符(2) ........ 78
4.1.6.6 设定行分隔符的示例 .............................. 79
4.1.6.7 导出数据中不包含行分隔符(1) .............. 80
4.1.6.8 导出数据中不包含行分隔符(2) .............. 80
4.1.6.9 导出数据中不包含行分隔符(3) .............. 81
4.1.6.10 设定字段分隔符的示例 .......................... 82
4.1.6.11 设置字段分隔符(1) ....................... 83
4.1.6.12 设置字段分隔符(2) ....................... 83
4.1.6.13 导出数据中包含空值的示例 ...................... 84
4.1.6.14 设置空值参数值(1) ....................... 85
4.1.6.15 设置空值参数值(2) ....................... 86
GBase 8a MPP Cluster 数据抽取工具手册
南大通用数据技术股份有限公司 - 1 -
前言
手册简介
GBase 8a MPP Cluster 数据加载及导出工具参考手册用于对数据加载及数
据导出工具进行详细介绍。
第一章介绍了 db2to8a 数据抽取工具、orato8a 数据抽取工具与 GBase 数
据加载工具两者之间的关联性。
第二章介绍了数据抽取和加载中,文件格式说明以及 C 转义符的规则。
第三章介绍了 db2to8a 数据导出工具,该工具主要用于介绍如何从 db2 数
据库中将数据提取出来,并提供实际运行示例。
第四章介绍了 oracle 客户端的安装。
第五章介绍了 orato8a 数据导出工具,该工具主要用于介绍如何从 oracle
数据库中将数据提取出来,并提供实际运行示例。
第六章介绍了 GBase 8a MPP Cluster 的数据加载工具,该工具主要介绍如
何将各种数据源数据导入到 GBase 8a MPP Cluster 中,并提供实际运行示例。
GBase 8a MPP Cluster 数据抽取工具手册

  • 2 - 南大通用数据技术股份有限公司
    公约
    下面的文本约定用于本文档:
    约 定 说 明
    加粗字体 表示文档标题
    大写英文(SELECT) 表示 GBase 8a MPP Cluster 关键字
    等宽字体 表示代码示例
    … 省略号指明被省略的内容。
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 3 -
  • 1 数据抽取与加载的 关系
    db2to8a 工具是南大通用数据技术股份有限公司提供的一个可以从 db2 数
    据库系统中抽取数据的工具,使用它可以从 db2 系统中抽取出用户所需要的数
    据,并以文件的形式保存下来,该文件可以作为其它数据库(包括 GBase 8a
    数据库系统)的数据源文件。
    用户可以使用系统提供的数据加载组件工具(dispserver、dispcli),实
    现将数据源文件加载到 GBase 数据库系统的功能。
    图 1-1db2to8a 与 GBase 数据加载工具关系图
    orato8a 工具是南大通用数据技术股份有限公司提供的一个可以从 oracle
    数据库系统中抽取数据的工具,使用它可以从 oracle 系统中抽取出用户所需要
    的数据,并以文件的形式保存下来,该文件可以作为其它数据库(包括 GBase 8a
    数据库系统)的数据源文件。
    用户可以使用系统提供的数据加载组件工具(dispserver、dispcli),实
    现将数据源文件加载到 GBase 数据库系统的功能。
    GBase 8a MPP Cluster 数据抽取工具手册
  • 4 - 南大通用数据技术股份有限公司
    图 1-2orato8a 与 GBase 数据加载工具关系图
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 5 -
  • 2 文件格式的说明
    2.1 文本格式
    无转义的文本格式(format=3):
     行与行之间默认使用'\n '进行分隔(一次加载的文本文件中行分隔符
    必须一致),用户可以自定义行分隔符;
     任何字段的内容中都不能包含行分隔符;
     字段之间使用指定的字段分隔符进行分隔;
     使用指定的字符串代表空值;
     字段可以被包围符包围,导入时支持全部字段带有包围符、部分字段
    带有包围符、不带包围符三种类型;
     字段内容不能被转义。
    定长文本格式(format=4):
     行与行之间默认使用'\n'进行分隔(一次加载的文本文件中行分隔符
    必须一致),用户可以自定义行分隔符;
     任何字段的内容中都不能包含行分隔符;
     所有行中的相同字段都以定长方式存储,字段数据尺寸不足字段宽度
    的,使用空格符补齐;
     使用指定的字符串代表空值;
     字段内容不能被包围符包围,也不能被转义。
    2.2 C C 转义符的规则
    数字符串使用 C 风格转义,以支持可见和不可见字符。C 转义规则如下:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 6 - 南大通用数据技术股份有限公司
    转义字符 16 进制编码
    '\a' 0x07
    '\b' 0x08
    '\e' 0x1b
    '\f' 0x0c
    '\n' 0x0a
    '\r' 0x0d
    '\t' 0x09
    '\v' 0x0b
    '\\' 0x5c
    '\0' 0x00
    '\xFF' //反斜杠后跟 x,后跟两位有效 16 进
    制数(0x00~0xff,忽略大小写),转
    义为数值为对应 16 进制数的单字节
  • 3 oraa to8a 工具 使用
    3.1 e oracle 客户端的安装
    本章主要为客户讲解如何在 Linux 操作系统中安装 oracle 客户端,安装它
    的目的就是为了使用 orato8a 这个数据抽取工具。通常,我们建议在安装有
    oracle 客户端的物理机器上,使用 orato8a 这个工具。
    说明:集群的安装包中不提供 oracle 客户端程序,本章描述仅用于参考。
    下面以安装平台为 Linux,使用 oracle10g 客户端进行安装为例介绍安装
    步骤。
    3.1.1.1 获取安装文件
    Linux 操作系统中的 oracle 的客户端安装包文件,通常是 rpm 包。完整的
    oracle 客户端安装包一共包含如下几个安装包文件:
     oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 7 -
     oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
     oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.x86_64.rpm
    上面的安装包文件,可以访问 oracle 的官方网站,从网站上下载。
    3.1.1.2 创建用户
    在装有 Linux 操作系统的机器上,首先切换到 root,创建一个新的操作系
    统用户。
    示例:创建一个 oracli 用户。
    $ su
    密码:

    /usr/sbin/useradd oracli

    passwd o racli

    更改用户 oracli 的密码 。
    新的 密码:
    重新输入新的 密码:
    passwd: 所有的身份验证令牌已经成功更新。
    3.1.1.3 创建目录
    按照上一小节中的介绍,如果成功的创建用户后,我们接下来的工作,就
    是需要创建所需要的目录。
    示例:使用 root 用户,创建目录,并修改目录的权限
    su – root
    密码:

    mkdir - - p /home/oracli/network/admin

    chown - - R oracli:oralci /home/oracli

    chmod - - R 755 /home/o racli

    3.1.1.4 拷贝并修改 a tnsnames.ora 文件
    GBase 8a MPP Cluster 数据抽取工具手册

  • 8 - 南大通用数据技术股份有限公司
    我们需要将 oracle服务器上面的 tnsnames.ora 这个文件拷贝装有 oracle
    客户端机器上的/home/oralci/network/admin 这个目录下面。
    查看 oracle 服务器端的机器中(192.168.103.79)的 tnsnames.ora
    ll /opt/oracle/product/OraHome/network/admin/tnsnames.ora
    -rw-r-----. 1 oracle11g oracle11g 316 May 21 2015
    /opt/oracle/product/OraHome/network/admin/tnsnames.ora
    在客户端(192.168.103.88)机器上使用 scp 命令拷贝文件。
    su – root
    密码:

    scp

    root/111111@192.168.103.79:/ opt/oracle/product/OraHome/network/admin/ tnsnames.o
    ra /home/oracli/network/admin
    root/111111@192.168.103 .79's password:
    tnsnames.ora
    由于使用 root 用户进行的 scp 拷贝,因此拷贝结束后,依旧需要修改
    tnsnames.ora 权限

    chown - - R oracli:oracli /home/oracli

    chmod - - R 755 /home/oracli

    切换为 oracli 用户,查看 tnsnames.ora 内容
    su – oracli
    $ cat /home/oracli/network/admin/tnsnames.ora

    tnsnames.ora Network Configuration File:

    /opt/oracle/product/10g/network/admin/tnsnames.ora

    Generated by Oracle configuration tools.

    ORCL =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 9 -
    (SERVICE_NAME = orcl)
    )
    )
    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
    (SID = PLSExtProc)
    (PRESENTATION = RO)
    )
    )
    在 tnsnames.ora 中,需要将 HOST = localhost 中的 localhost 修改为
    oracle 服务器端的 IP,例如:192.168.103.79。PORT=1521 是 oracle 默认使
    用的端口,如果发生变化,也需要修改。SERVICE_NAME = orcl 中 orcl 是服务
    名,使用 sqlplus64 登录时,需要使用它。
    使用 vi 命令修改 IP 地址,修改完毕后:wq 保存退出。PORT 端口使用默认
    的 1521 端口,无需修改。
    vi tnsnames.ora

    tnsnames.ora Network Configuration File:

    /opt/oracle/product/10g/network/admin/tnsnames.ora

    Generated by Oracle configuration tools.

    ORCL =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.103.79)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl)
    )
    )
    GBase 8a MPP Cluster 数据抽取工具手册

  • 10 - 南大通用数据技术股份有限公司
    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
    (SID = PLSExtProc)
    (PRESENTATION = RO)
    )
    )
    ~
    ~
    "tnsnames.ora" 23L, 519C 已写入
    说明:因为该文件是从 oracle 服务器端拷贝过来的,因此,一旦 oracle
    服务器端的该文件的配置发生变化,例如增加了服务名,删除了服务名,我们
    建议重新拷贝至客户端的/home/oracli/network/admin/路径下,并修改每个
    服务名中的 HOST 的 IP 地址值。如果端口发生变化,也要修改 PORT 的端口值。
    3.1.1.5 安装客户端的 m rpm 包
    使用root用户进行rpm包的安装,由于rmp包之间的依赖关系,因此oracle
    客户端 rpm 包的安装顺序如下:
    1、 oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
    2、 oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
    3、 oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.x86_64.rpm
    示例:安装 rpm 包

    rpm - - ivh oracle- - instantclient11.2- - basic- - 11.2.0.4.0- - 1.x86_64.rpm

    Preparing... ###########################################
    [100%]
    1:oracle-instantclient-ba###########################################
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 11 -
    [100%]

    rpm - - ivh oracle- - instantclient11.2- - sqlplus- - 11.2.0.1.0- - 1.x86_64.rpm

    Preparing... ###########################################
    [100%]
    1:oracle-instantclient-sq###########################################
    [100%]

    rpm - - ivh oracle- - instantclient11.2- - devel- - 11.2.0.4.0- - 1.x86_64.rpm

    Preparing... ###########################################
    [100%]
    1:oracle-instantclient-de###########################################
    [100%]
    3.1.1.6 配置客户端用户的e .bash_profile 文件
    用户还需要修改客户端用户下“.bash_profile”文件的配置信息,将下面
    的配置信息添加到.bash_profile 文件中。
    export ORACLE_HOME=/home/oracli
    export SQLPATH=/home/oracli/network/admin
    export TNS_ADMIN=/home/oracli/network/admin
    export
    LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH
    export PATH=$PATH:$ORACLE_HOME:$LD_LIBRARY_PATH
    示例:
    $ cd /home/oracli
    $ vi .bash_profile

    .bash_profile

    Get the aliases and functions

    GBase 8a MPP Cluster 数据抽取工具手册

  • 12 - 南大通用数据技术股份有限公司
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi

    User specific environment and startup programs

    PATH=$PATH:$HOME/bin
    export PATH
    export ORACLE_HOME=/home/oracli
    export SQLPATH=/home/oracli/network/admin
    export TNS_ADMIN=/home/oracli/network/admin
    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH
    export PATH=$PATH:$ORACLE_HOME:$LD_LIBRARY_PATH
    ~
    ~
    ~
    ".bash_profile" 20L, 488C 已写入
    保存退出后,使用 source 命令使配置文件生效。
    $ source .bash_profile
    3.1.1.7 测试连接 oracle
    所有的安装,配置工作结束后,可以测试 oracle 客户端是否可以连接了。
    oracle 服务器端 IP:192.168.103.79
    oracle 的登录用户和密码:均为 ct1
    oracle 的服务名;orcl
    使用 sqlplus64 命令连接 oracle。
    示例如下:
    sqlplus64 /nolog
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 13 -
    SQL*Plus: Release 10.2.0.5.0 - Production on Fri Oct 18 11:18:04 2013
    Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
    SQL> conn ct1/ct1@//192.168.103.79/orcl
    Connected.
    SQL>
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 14 -
    3.2 p Hadoop 生态环境搭建
    将 oracle 数据库中的 Clob 和 Blob 字段导出需要 Hadoop 生态环境支持,以下
    是 Hadoop 生态环境相关软件名称、版本和文件名
    软件 文件名 版本
    Hadoop hadoop-2.6.0.tar.gz 2.6.0
    ZooKeeper zookeeper-3.4.6.tar.gz 3.4.6
    Hbase hbase-0.98.14-hadoop2-bin.tar.gz 0.98.14
    3.2.1 S HDFS 部署
    使用 Apache Hadoop 2.6.0 部署 HDFS 服务器
    3.2.1.1 p Hadoop 集群环境准备
    操作系统用户:gbase
    集群各节点间的 ssh 互信已建立。
    集群已配置 C3 工具。
    开源产品版本:
    Apache Hadoop 2.6.0
    JVM 1.6 或 1.7 版本
    集群节点功能规划示例:
    IP 主机名 功能
    192.168.10.114 ch-10-114 NameNode, DataNode
    192.168.10.115 ch-10-115 DataNode
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 15 -
    192.168.10.116 ch-10-116 DataNode
    3.2.1.2 主机名配置
    各节点的主机名需要正确配置,以 192.168.10.114 节点示例如下,其他节
    点直接拷贝该配置即可。注:访问 HDFS 的客户端需要有 DNS 服务器支持,或者
    在客户端的/etc/hosts 文件中添加类似下面的 IP-HOST 映射关系,否则访问
    HDFS 时会报错。
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.10.114 ch-10-114
    192.168.10.115 ch-10-115
    192.168.10.116 ch-10-116
    注意:第一行如果配置成如下形式是错误的,安装完成后会出现 Hadoop
    的 Datanode 无法连接 Namenode 的情况。
    127.0.0.1 ch-10-114 localhost localhost.localdomain localhost4
    localhost4.localdomain4
    如果集群中没有DNS服务器可以解析 Hadoop的Namenode和Datanode的主
    机名,则需要在每个执行加载任务的 coordinator节点,以及集群中的每个 data
    节点上,都要配置/etc/hosts 文件,在其中加入如上 Hadoop 的 Namenode 和
    Datanode 的 IP地址和主机名映射。如未配置/etc/hosts 文件,执行加载 HDFS
    服务器上文件时,会报类似“Couldn't resolve host name”字样的错误。
    检查方法:
    1)通过 jps 查看,发现 DataNode 已经启动,但是检查 DataNode 上的日志,
    发现 DataNode 在不断尝试连接 NameNode 节点的 9000 端口(HDFS 的
    GBase 8a MPP Cluster 数据抽取工具手册

  • 16 - 南大通用数据技术股份有限公司
    RPC 端口)。
    2)在 NameNode 节点执行 netstat -an,看到如下信息:
    $ netstat - - an | grep 9000
    tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
    错误原因:TCP 监听的 IP 是 127.0.0.1,导致只有本机能够连接到 9000 端口。
    原因是 NameNode 的/etc/hosts 文件配置错误。
    解决办法:去掉第一行的红色字体(ch-10-114)。
    重启 HDFS,再次用 netstat -an | grep 9000 查看,端口和 IP 正确。
    $ netstat - - an | grep 9000
    tcp 0 0 192.168.10.114:9000 0.0.0.0:* LISTEN
    3.2.1.3 目录规划
    目录 用途
    /home/gbase/bin 放置 Hadoop 生态系统,包括 Hadoop 等
    /home/gbase/hdfs 放置 HDFS 文件,包括 tmp、name、data
    添加环境变量${HADOOP_HOME}
    $ echo “ export HADOOP_HOME=/home/gbase/bin/ Hadoop- - 2.6.0” >> ~/.bashrc
    $. ~/.bashrc
    注:下文中的${HADOOP_HOME}指/home/gbase/bin/Hadoop-2.6.0
    3.2.1.4 准备 Hadoop
    把 hadoop-2.6.0.tar.gz 解压到各节点的/home/gbase/bin。
    $ tar xfz hadoop- - 2.6.0.tar.gz - - C /home/gbase/bin
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 17 -
    3.2.1.5 配置 hadoop- - env.sh
    文件路径:${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
    $ cd ${HADOOP_HOME}
    $ vi etc/hadoop/hadoop- - env.sh
    Name node 和 Data node 均按如下配置。
    把 export JAVA_HOME=$JAVA_HOME 修改为:
    export JAVA_HOME=/usr/lib/jvm/jre-1.6.0
    把 export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}修改为:
    export HADOOP_CONF_DIR=/home/gbase/bin/hadoop-2.6.0/etc/hadoop
    3.2.1.6 配置 core- - site.xml
    文件路径:${HADOOP_HOME}/etc/hadoop/core-site.xml
    $ cd ${HADOOP_HOME}
    $ vi etc/hadoop/core- - site.xml
    Name node 和 Data node 均按如下配置
    <configuration>
    <property>
    <name>fs.default.name</name>
    <value>hdfs://ch-10-114:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/gbase/hdfs/tmp</value>
    </property>
    GBase 8a MPP Cluster 数据抽取工具手册
  • 18 - 南大通用数据技术股份有限公司
    </configuration>
    3.2.1.7 配置 hdfs- - site.xml
    文件路径:${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
    $ cd ${HADOOP_HOME}
    $ vi etc/hadoop/hdfs- - site.xml
    Name node 配置
    <configuration>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    <property>
    <name>dfs.name.dir</name>
    <value>file:/home/gbase/hdfs/name</value>
    <description>name node dir </description>
    </property>
    <property>
    <name>dfs.permissions</name>
    <value>false</value>
    </property>
    </configuration>
    Data Node 配置
    <configuration>
    <property>
    <name>dfs.data.dir</name>
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 19 -
    <value>file:/home/gbase/hdfs/data</value>
    <description>data node dir</description>
    </property>
    </configuration>
    3.2.1.8 配置 s Masters 和 和 Slaves
    文件路径: ${HADOOP_HOME}/etc/hadoop/masters
    ${HADOOP_HOME}/etc/hadoop/slaves
    只需要在 NameNode 节点配置即可。
    $ cd ${HADOOP_HOME}
    $ vi etc/hadoop/masters
    ${HADOOP_HOME}/etc/hadoop/masters 文件内容
    ch-10-114
    $ cd ${HADOOP_HOME}
    $ vi etc/hadoop/slaves
    ${HADOOP_HOME}/etc/hadoop/slaves 文件内容
    ch-10-114
    ch-10-115
    ch-10-116
    3.2.1.9 格式化 NameNode
    NameNode 的格式化需要在启动 HDFS 之前进行。
    $ cexec rm - - fr /home/gbase/hdfs/*
    GBase 8a MPP Cluster 数据抽取工具手册
  • 20 - 南大通用数据技术股份有限公司
    $ cd ${HADOOP_HOME}
    $ bin/hdfs namenode - - format
    3.2.1.10 启动 HDFS
    $ cd ${HADOOP_HOME}
    $ sbin/start- - dfs.sh
    启动完毕后,通过 jps 检查各节点的进程,如下即为正确启动了。
    $ cexec jps
    test
    --------- 192.168.10.114---------
  • SecondaryNameNode
  • NameNode
  • Jps
    --------- 192.168.10.115---------
  • DataNode
  • Jps
    --------- 192.168.10.116---------
  • DataNode
  • Jps
    3.2.1.11 停止 HDFS
    $ cd ${HADOOP_HOM E}
    $ sbin/ stop- - dfs.sh
    3.2.2 r ZooKeeper 部署
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 21 -
    使用 Apache ZooKeeper 3.4.6 部署 ZooKeeper
    3.2.2.1 准备 ZooKeeper
    把 zookeeper-3.4.6.tar.gz 解压到各节点的/home/gbase/bin。
    $ tar xfz zookeeper- - 3.4.6.tar.gz - - C /home/gbase/bin
    3.2.2.2 配置 zoo.cfg
    将/home/gbase/bin/zookeeper-3.4.6/conf/zoo_sample.cfg 文件复制改名为
    zoo.cfg 并编辑新文件
    $ cd /home/gbase/bin/zookeeper- - 3.4.6
    $ cp conf/zoo_sample.cfg conf/zoo.cfg
    $ vi conf/zoo.cfg
    配置 zoo.cfg 中的 dataDir 项,所有节点相同。

    the directory where the snapshot is stored.

    do not use /tmp for storage, /tmp here is just

    example sakes.

    dataDir=/home/gbase/zookeeper
    在 zoo.cfg 末尾增加以下配置,所有节点相同。如为单机环境则不需添加。
    server.0=192.168.10.114:2888:3888
    server.1=192.168.10.115:2888:3888
    server.2=192.168.10.116:2888:3888
    在各节点的 dataDir 目录(/opt/zookeeper)下新建名称为 myid 的文件,分别
    向自的 myid 中写入服务器号(server.x 中点后的数字),比如:
    server.0=192.168.10.114:2888:3888,192.168.10.114 的服务器号为 0;
    server.1=192.168.10.115:2888:3888,192.168.10.115 的服务器号为 1;
    GBase 8a MPP Cluster 数据抽取工具手册

  • 22 - 南大通用数据技术股份有限公司
    Server.2=192.168.10.116:2888:3888,192.168.10.116 的服务器号为 2;
    3.2.2.3 启动 ZooKeeper
    在所有节点上执行:
    $ cd /home/gbase/bin/zookeeper- - 3.4.6
    $ bin/zkServer.sh start
    然后可执行以下命令,检查指定服务器是否成功启动:
    $ bin/zkCli.sh - - server xxx.xxx.xxx.xxx:2181
    3.2.2.4 停止 ZooKeeper
    在所有节点上执行:
    $ cd /home/gbase/bin/zookeeper- - 3.4.6
    $ bin/zkServer.sh stop
    3.2.3 H HB Be ase 部署
    使用 Apache HBase 3.4.6 部署 HBase 服务器
    3.2.3.1 准备 H HB B ase
    把 hbase-0.98.14-hadoop2-bin.tar.gz 解压到各节点的/home/gbase/bin。
    $ tar xfz h h base- - 0.98.14- - hadoop2- - bin.tar.gz - - C /home/gbase/bin
    3.2.3.2 配置 hbase- - env.sh
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 23 -
    文件路径:/home/gbase/bin/hbase-0.98.14-hadoop2/conf/hbase-env.sh
    $ cd /home/gbase/bin/hbase- - 0.98.14- - hadoop2
    $ vi conf/hbase- - env.sh
    在所有节点上配置:
    把 export JAVA_HOME=$JAVA_HOME 修改为:
    export JAVA_HOME=/usr/lib/jvm/jre-1.6.0
    把 export HBASE_MANAGES_ZK=false 修改为:
    export HBASE_MANAGES_ZK=true
    3.2.3.3 配置 hbase- - site.xml
    文件路径:/home/gbase/bin/hbase-0.98.14-hadoop2/conf/hbase-site.xml
    $ cd /home/gbase/bin/hbase- - 0.98.14- - hadoop2
    $ vi conf/ hbase- - site.xml
    在所有节点上配置:
    <configuration>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://ch-10-114:9000/hbase</value>
    </property>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>ch-10-114,ch-10-115,ch-10-116</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/gbase/zookeeper</value>
    </property>
    <property>
    GBase 8a MPP Cluster 数据抽取工具手册
  • 24 - 南大通用数据技术股份有限公司
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    </property>
    <property>
    <name>hbase.client.keyvalue.maxsize</name>
    <value>524288000</value>
    </property>
    <property>
    <name>hbase.hregion.max.filesize</name>
    <value>21474836480</value>
    </property>
    </configuration>
    配置项说明:
    配置项 修改 说明
    hbase.rootdir hdfs://ch-10-114:9
    000/hbase
    HBase 在 HDFS 上的根
    目录 URL 地址
    hbase.cluster.distributed true HBase 集群
    hbase.zookeeper.quorum ch-10-114,ch-10-11
    5,ch-10-116
    ZooKeeper 主机名
    hbase.zookeeper.property.d
    ataDir
    /home/gbase/zookee
    per
    ZooKeeper的 dataDir
    hbase.zookeeper.property.c
    lientPort
  • ZooKeeper 端口
    hbase.client.keyvalue.maxs
    ize
  • 根据具体情况修改
    hbase.hregion.max.filesize 21474836480 根据具体情况修改
    3.2.3.4 配置 regionservers
    文件路径:/home/gbase/bin/hbase-0.98.14-hadoop2/conf/regionservers
    $ cd /home/gbase/b in/hbase- - 0.98.14- - hadoop2
    $ vi conf/ regionservers
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 25 -
    在所有节点上配置:
    ch-10-114
    ch-10-115
    ch-10-116
    3.2.3.5 启动 HBase
    在 Hadoop 的 Master 节点上执行:
    $ $ cd /home/gbase/bin/hbase- - 0.98.14- - hadoop2
    $ bin/start- - hbase.sh
    $ bin/hbase- - daemons.sh start thrift
    启动完毕后,通过 jps 检查各节点的进程,如下即为正确启动了。
    $ $ ce xec jps
    test
    --------- 192.168.10.114---------
  • HMaster
  • QuorumPeerMain
  • ThriftServer
  • DataNode
  • HRegionServer
  • NameNode
  • SecondaryNameNode
  • HQuorumPeer
    --------- 192.168.10.115---------
  • HRegionServer
  • HQuorumPeer
  • DataNode
    --------- 192.168.10.116---------
  • DataNode
  • HRegionServer
  • HQuorumPeer
    3.2.3.6 停止 HBase
    在 Hadoop 的 Master 节点上执行:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 26 - 南大通用数据技术股份有限公司
    $ $ cd /home/gbase/bin/hbase- - 0.98.14- - hadoop2
    $ bin/ stop- - hbase.sh
    $ bin/hbase- - daemons.sh stop thrift
    3.3 a orato8a 工具简介
    3.3.1 简介
    orato8a 是一个可以快速、高效地从 oracle 数据库系统中抽取数据,并将
    数据保存到指定文件或直接迁移到 GBase 8a 中的专用工具。并且 orato8a 还提
    供查询语句导出和全表导出两种方式,其中全表导出的登录用户需要对
    dba_extents、dba_objects 和 dba_tables 这三张表有 select 权限。
    3.3.2 安装文件
    orato8a 是一个独立运行的数据抽取工具,需要将此工具部署在可以访问
    到 oracle 的机器上,或者直接与 oralce server 部署在一台服务器上。
    orato8a 安装包以 tar.bz2 的压缩形式提供。例如:
    orato8a_26794_Redhat6.2_x86_64.tar.bz2。
    该安装包文件名各部分的具体含义如下:
    orato8a:代表工具的名称;
    26794:代表该工具的版本号;
    Redhat6.2:代表该工具运行的操作系统为 Red hat 6.2
    x86_64:代表该工具是一个运行在 64 位操作系统下的工具;
    3.3.3 获取安装文件并解压安装
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 27 -
    我们以 64 位的 linux 操作系统为例,为用户介绍获取 orato8a 后如何解压
    安装它。
    将安装光盘放入光驱,使用 mount 命令将光驱挂载到 Linux 文件系统。加
    载光驱命令如下(通常,加载光驱需要 root 用户):

    mkdir /mnt/cdrom

    mount /dev/cdrom /mnt/cdrom

    将光驱中的安装包的压缩文件(如:
    orato8a_26794_Redhat6.2_x86_64.tar.bz2)复制到文件系统的某个目录下。
    进入该目录(假设将安装包放在了/root 目录下),在命令行模式下使用 tar 命
    令进行解压。解压命令如下:

    tar xfj j orato8a_26794_Redhat6.2_x86_64.tar.bz2

    解压后,将会在解压目录下产生一个 orato8a 的可执行程序文件。
    $ ll
    总用量 2068
    ……
    -rw-r--r-- 1 root root 1380535 8 月 23 01:08 orato8a
    -rw-r--r-- 1 root root 663929 8 月 22 17:13
    orato8a_26794_Redhat6.2_x86_64.tar.bz2
    3.3.4 语法格式
    ./orato8a parameter_1 parameter_2 …… parameter_n
    parameter_1 :orato8a 的参数,一个 orato8a 后可以使用多个参数,参数
    可以使用全称格式,也可以使用简称格式。
    全称格式:-- parameter_1 =参数值,=两边不能有空格;
    简称格式:- parameter_1 参数值;简写格式时,参数和参数值之间不能有
    空格。
    特别说明:
    执行 orato8a 的用户,必须是可以访问 oracle 数据库的用户。
    GBase 8a MPP Cluster 数据抽取工具手册

  • 28 - 南大通用数据技术股份有限公司
    示例:
    下面通过一个简单的示例来说明 orato8a 工具如何从 oracle 中抽取数据,
    在本示例中,首先登录 oracle,然后写一条查询 SQL,该 SQL 在库中查询表
    lineorder 中的 10 条数据;退出 oracle,使用 orato8a 工具抽取查询 SQL 的结
    果数据,以验证 orato8a 抽取数据的功能。
    $ sqlplus /nolog
    SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 26 16:37:41 2013
    Copyright (c) 1982, 2009, Oracle. All rights reserved.
    SQL> conn ct1/ct1@//192.168.103.79/orcl
    Connected.
    SQL> CREATE TABLE lineorder_test (
  • lo_orderkey number(18),
  • lo_linenumber number(18)
  • );
    Table created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber)
    VALUES(1,1);
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber)
    VALUES(1,2);
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber )
    VALUES(1,3);
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 29 -
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber)
    VALUES(2,1);
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber)
    VALUES(2,2);
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey ,lo_linenumber)
    VALUES(2,3);
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber)
    VALUES(2,4);
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber)
    VALUES(3,1);
  • row created.
    SQL> INSERT INTO lineorder_tes t (lo_orderkey,lo_linenumber)
    VALUES(3,2);
  • row created.
    SQL> INSERT INTO lineorder_test (lo_orderkey,lo_linenumber)
    VALUES(3,3);
  • row created.
    GBase 8a MPP Cluster 数据抽取工具手册
  • 30 - 南大通用数据技术股份有限公司
    SQL> COMMIT;
    COMMIT complete.
    SQL> SELECT LO_ORDERKEY, LO_LINENUMBER FROM lineorder _test; ;
    LO_ORDERKEY LO_LINENUMBER


  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • rows selected.
    然后退出 oracle,使用 orato8a 抽取上面查询的数据。
    $ ./orato8a -- user='ct1/ct1ct1@orcl' -- query="select LO_ORDERKEY,
    LO_LINENUMBER FROM lineorder_test" -- file='/opt/orato8a_output/lineorder.txt '
    -- field=";" -- for mat=3 3
    export columns: 2
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat /opt/orato8a_output/lineorder.txt
    1;1
    1;2
    1;3
    2;1
    2;2
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 31 -
    2;3
    2;4
    3;1
    3;2
    3;3
    导出的数据文件中的内容与在 oralce 系统中查询的结果一致。
    3.3.5 参数说明
    3.3.5.1 user
    功能:
    指定连接 oracle 数据库的相关参数,包括:用户名、密码、oracle 数据
    库所在服务器的 IP、oracle 监听端口号和 oracle 实例名,该参数的格式为:
    用户名[/密码][@[oracle 数据库所在服务器 IP:oracle 监听端口号
    /]oracle 实例名]
    示例:
    --user='orcl/orcl@192.168.103.109:1521/maya '
    或者
    -u'orcl/orcl@192.168.103.109:1521/maya'
    说明:
    参数全称 参数简称 取值范围 默认值
    user u 无 无
    3.3.5.2 query
    功能:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 32 - 南大通用数据技术股份有限公司
    指定导出数据所使用的查询 SQL 语句。由于查询语句常有空格,该参数在
    指定时,需要用双引号限定。该参数不能与 parallel 参数同时使用。
    另外,查询语句应该为一个符合 oracle 语法的 SQL,并且只返回一组结果
    集。
    示例:
    --query="select * from lineorder"
    或者
    -q"select * from lineorder"
    说明:
    参数全称 参数简称 取值范围 默认值
    query q 无 无
    3.3.5.3 table_name
    功能:
    指定表名,该参数不能与 query 参数同时使用。
    示例:
    --table_name='lineorder'
    或者
    -t'lineorder'
    说明:
    参数全称 参数简称 取值范围 默认值
    table_name t 无 无
    3.3.5.4 owner
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 33 -
    功能:
    在全表导出时,指定被导出表的隶属的用户名,该参数不能与 query 参数
    同时使用。
    如果不指定该 参数,默认为登录用户。
    示例:
    --owner='use1'
    或者
    -o'user1'
    说明:
    参数全称 参数简称 取值范围 默认值
    owner o 无 登录用户
    3.3.5.5 file
    功能:
    指定导出数据文件的存放路径及文件名。
    该参数可以指定为一个包含绝对路径的文件名,也可以指定为一个包含相
    对路径的文件名。当该参数指定为一个不包含路径的文件名时,该文件被保存
    在当前路径中。
    示例:
    --file='aaa.txt'
    --file='/home/lina/aaa.txt'
    --file='../aaa.txt'
    或者
    -f'aaa.txt'
    GBase 8a MPP Cluster 数据抽取工具手册
  • 34 - 南大通用数据技术股份有限公司
    -f'/home/lina/aaa.txt'
    -f'../aaa.txt'
    说明:
    参数全称 参数简称 取值范围 默认值
    file f 无 无
    3.3.5.6 format
    功能:
    指定导出数据文件的数据格式。
    当设置为 3 时,导出数据为无转义的文本格式;
    示例:
    --format='3'
    或者
    -m'3'
    说明:
    参数全称 参数简称 取值范围 默认值
    format m 3 3
    3.3.5.7 field
    功能:
    指定字段分隔符。
    参数值可使用字符本身、转义符或十六进制方式表示。
    当使用 format=3 导出时,必须设置该参数的值。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 35 -
    --field=","
    --field ="\x2c"
    --field=" x'2c'"
    或者
    -e","
    -e"\x2c"
    -e"x'2c'"
    说明:
    参数全称 参数简称 取值范围 默认值
    field e 最多 15 个字符 格式 3:无
    3.3.5.8 string_qualifier
    功能:
    指定字段包围符,该参数只在 format=3 时有效。如果设定字段包围符,所
    有字段都会加上字段包围符。如果字段内容与字段包围符内容有重复的部分,
    则使用字段包围符对字段内容进行转义。
    参数值可使用字符本身、转义符或十六进制方式表示。
    示例:
    --string_qualifier ='@'
    或者
    -s'@' -s 和后面的参数之间可以不用空格。
    如果设定为十六进制的字段包围符,则命令参数后面用双引号扩起十六进
    制值。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 36 - 南大通用数据技术股份有限公司
    --string_qualifier ="x'62'"
    或者
    -s"x'62'"
    说明:
    参数全称 参数简称 取值范围 默认值
    string_qualifier s 一个字符 无
    3.3.5.9 line_separator
    功能:
    该参数用于设定行分隔符。只在 format=3 时,该参数有效。
    示例:
    单字节行分隔符:
    --line_separator ='@'
    或者
    -l'@'
    多字节行分隔符:
    --line_separator='|'
    或者
    -l'|'
    如果设定为十六进制的行分隔符,则命令参数后面用双引号扩起十六进制
    值。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 37 -
    --line_separator ="x'6223'"
    或者
    -l"x'6223'"
    说明:
    参数全称 参数简称 取值范围 默认值
    line_separator l 最多 15 个字符 '\n'
    3.3.5.10 null_value
    功能:
    该参数用于设定 NULL 值。只在 format=3 时,该参数有效。
    示例:
    --null_value ='\N'
    或者
    -n'\N'
    说明:
    参数全称 参数简称 取值范围 默认值
    null_value n 最大 15 个字符 \N
    3.3.5.11 parallel
    功能:
    指定并行度。此模式下,需要使用 table_name 参数指定表名,不能使用
    query 参数,也就是意味着,使用并行模式,只能全表导出。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 38 - 南大通用数据技术股份有限公司
    --parallel ='4'
    或者
    -T'2'
    说明:
    参数全称 参数简称 取值范围 默认值
    parallel T 1 - CPU 核数 默认 4
    3.3.5.12 blob_conf
    功能:
    指定 clob 和 blob 字段存储配置,大于 32kB 的 clob 和 blob 字段数据会被
    存储到 HBase 或 HDFS 上。该参数值为 XML 文件路径,仅在 format=3 情况下有
    效。XML 文件内容如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <orato8a>
    <BlobStorage>
    <HBase>
    <Host>
    <ServerName>192.168.10.114</ServerName>
    <Port>9090</Port>
    <UserName></UserName>
    <Password></Password>
    </Host>
    <MaxConn>5</MaxConn>
    <ConnRetryTime>3</ConnRetryTime>
    <TableName>HbaseStream</TableName>
    <ColFamilyName>file</ColFamilyName>
    <MaxSize>16777216</MaxSize>
    </HBase>
    <HDFS>
    <Host>
    <ServerName>192.168.10.114</ServerName>
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 39 -
    <Port>50070</Port>
    <UserName>gbase</UserName>
    <Password></Password>
    </Host>
    <Path>/blob</Path>
    <MaxSize>17179869184</MaxSize>
    </HDFS>
    <Cache>
    <Path>/tmp</Path>
    <MaxSize>2147483648</MaxSize>
    </Cache>
    </BlobStorage>
    </orato8a>
    配置项说明:
    配置项 说明
    HBase.Host HBase 主机地址,可有多个
    HBase.MaxConn HBase 最大链接数,默认值:5
    HBase.ConnRetryTime HBase 链接重试次数,默认值:3
    HBase.TableName HBase 表名 (需要预先创建)
    HBase.ColFamilyName HBase 列族名
    HBase.MaxSize Blob 存储在 HBase 中的最大长度,超过此长度的文
    件将被存储到 HDFS 中,默认值:16777216(16MB)
    HDFS.Host HDFS 主机地址,可有多个
    HDFS.Path HDFS 存储文件路径 (需要预先创建)
    HDFS.MaxSize Blob存储在HDFS中的最大长度,如文件长度超过此
    数值,导出报错,默认值:17179869184(16GB)
    Cache.Path BlobCache 路径 (需要预先创建)
    Cache.MaxSize BlobCache 最大长度,默认值:2147483648(2GB)
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 40 - 南大通用数据技术股份有限公司
    --blob_conf ='/home/gbase/orato8a/orato8a.xml'
    或者
    -c'/home/gbase/orato8a/orato8a.xml'
    说明:
    参数全称 参数简称 取值范围 默认值
    blob_conf c 文件路径 无
    clob 或 blob 字段数据存储位置说明:
    1)数据长度小于 32kB 时,数据被直接写入导出数据文件中;
    2)数据长度大于等于 32kB 且小于等于 HBase.MaxSize 时,数据被
    写入 HBase 中,导出数据文件记录了 HBase 记录的 URL 信息;
    3)数据长度大于 HBase.MaxSize 且小于等于 HDFS.MaxSize 时,数
    据被写入 HDFS 文件中,导出数据文件记录了 HDFS 文件的 URL 信息;
    4)数据长度大于 HDFS.MaxSize 时,导出报错;
    3.3.5.13 task_number
    功能:
    指定任务号。该任务号应为在集群范围内唯一,用于防止存储在 HDFS 上的
    Blob 文件名称冲突。
    示例:
    --task_number ='2'
    或者
    -g'2'
    说明:
    参数全称 参数简称 取值范围 默认值
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 41 -
    参数全称 参数简称 取值范围 默认值
    task_number g 1 - 64 位无符号整
    数最大值
    默认 0,自动随机
    生成
    3.3.5.14 table_fields
    功能:
    当需要将 oracle 数据以不落地方式直接导入到 GBase 8a 时,指定 oracle
    的字段排序,字段名之间采用“,”分隔。缺省值为空,使用查询结果的字段排
    序。
    示例:
    --table_fields=”col1,col2,col3”
    或者
    -I”col1,col2,col3”
    说明:
    参数全称 参数简称 取值范围 默认值
    table_fields I 无 无
    3.3.5.15 gbase_table_fields
    功能:
    当需要将 oracle数据以不落地方式直接导入到 GBase 8a时,指定 GBase 8a
    的字段列表,字段名之间采用“,”分隔。缺省值为空,使用 GBase 8a 表定义
    的全部字段。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 42 - 南大通用数据技术股份有限公司
    --gbase_table_fields=”cola,colb,colc”
    或者
    -E”cola,colb,colc”
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_table_fields E 无 无
    3.3.5.16 gbase_db_name
    功能:
    当需要将 oracle数据以不落地方式直接导入到 GBase 8a时,指定 GBase 8a
    的数据库名。
    示例:
    --gbase_db_name=test
    或者
    -Dtest
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_db_name D 无 无
    3.3.5.17 gbase_table_name
    功能:
    当需要将 oracle数据以不落地方式直接导入到 GBase 8a时,指定 GBase 8a
    的表名。
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 43 -
    示例:
    --gbase_table_name=t
    或者
    -Rt
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_table_name R 无 无
    3.3.5.18 gbase_autocommit
    功能:
    当需要将 oracle数据以不落地方式直接导入到 GBase 8a时,指定 GBase 8a
    是否自动提交。当 gbase_autocommit=1 时,向 GBase 8a 中每成功插入一条数
    据后都会自动提交。当 gbase_autocommit=0 时,只有所有数据都插入成功后才
    会提交。
    示例:
    --gbase_autocommit=1
    或者
    -A1
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_autocommit A 0-1 0
    3.3.5.19 gbase_host
    GBase 8a MPP Cluster 数据抽取工具手册
  • 44 - 南大通用数据技术股份有限公司
    功能:
    目标集群中的某个可用节点的主机名或 IP 地址,如果 orato8a 和安装的
    GBase 8a 集群不在一台物理机器上,则需要使用该参数,去指定连接集群中某
    个节点的 IP 地址。如果指定多个 IP 地址,采用“,”分隔。
    在指定多个节点 IP 的情况下,orato8a 首先尝试与第一个节点 IP 建立连
    接,如果无法建立连接,则尝试与下一个节点 IP 建立连接。以此类推,如果配
    置的多个集群节点 IP 均无法建立连接,则 orato8a 无法建立与集群的连接,本
    次启动失败。
    示例:
    --gbase_host=192.168.10.100,192.168.10.101
    或者
    -H192.168.10.100,192.168.10.101
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_host H 合法的 IP 地址 127.0.0.1
    3.3.5.20 g g base_user
    功能:
    用来登录集群的用户名。
    示例:
    --gbase_user=gbase
    或者
    -Ugbase
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 45 -
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_user U 集群中已经存在的
    并且具有连接集群,
    操作集群数据库权
    限的用户
    gbase
    3.3.5.21 gbase_ password
    功能:
    用来登录集群的密码。通过 PS 命令查看 orato8a 进程时,密码显示为密文
    字符'xxxx'的形式,并且与登录密码等长。
    ps 命令查看 orato8a 进程时,显示为—gbase_password=xxxxx。
    示例:
    --gbase_password=admin
    或者
    -Padmin
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_password P 访问集群用户
    的密码
    gbase 用户对应到默认值
    为 gbase20110531
    3.3.5.22 gbase_socket
    功能:
    用来连接集群的 unix socket 文件。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 46 - 南大通用数据技术股份有限公司
    --gbase_socket=/tmp/gcluster_5258.sock
    或者
    -S/tmp/gcluster_5258.sock
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_socket S 无 /tmp/gcluster_5258.sock
    3.3.5.23 gbase_ port
    功能:
    用来连接集群 GCluster 的端口。默认端口号为 5258。
    示例:
    --gbase_port=5258
    或者
    -O5258
    说明:
    参数全称 参数简称 取值范围 默认值
    gbase_port O 1 ~ 65535 5258
    3.3.5.24 cipher
    功能:
    用户指定该参数时,orato8a 将用户指定的用户名密码转换为加密后的字
    符串,并输出。
    示例:
    ./orato8a –uroot/1234@test -C 或 --cipher
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 47 -
    说明:
    参数全称 参数简称 取值范围 默认值
    cipher C 无 无
    3.3.5.25 use_cipher
    功能:
    用户通过指定该参数,告知 orato8a 使用密文的用户名密码。
    示例:
    ./orato8a -uC53C4EB43A65D4E6CF241A2F290578DF -L 或 --use_cipher
    说明:
    参数全称 参数简称 取值范围 默认值
    use_cipher L 无 无
    3.3.5.26 skip_blob
    功能:
    用来指定对 blob 或 clob 类型列的处理方法。
    0:表示正常抽取 blob 和 clob 类型列数据,导出到文件中;
    1:表示跳过抽取 blob 和 clob 类型列数据;
    2:表示抽取 blob 和 clob 类型列数据,但不写入文件中。
    示例:
    ./orato8a --skipblob=1
    或者
    ./orato8a c1
    GBase 8a MPP Cluster 数据抽取工具手册
  • 48 - 南大通用数据技术股份有限公司
    说明:
    参数全称 参数简称 取值范围 默认值
    skip_blob c 0-2 0
    3.3.5.27 encoding
    功能:
    用来指定对 blob 或 clob 类型列数据的编码方式。
    text:表示将 blob 或 clob 类型列内容按二进制方式导出,这种方式导出
    可能存在列分隔符或行分隔符与字段内容冲突的问题,支持单条记录数据长度
    最大为 64M,超过 64M 时报错;
    base64:表示将 blob 或 clob 类型列内容按 base64 编码方式导出,这种方
    式导出解决了列分隔符或行分隔符与字段内容冲突的问题,支持单条记录数据
    长度最大为 64M,超过 64M 时报错;
    url:表示将 blob 或 clob 类型列内容按 url 方式导出,即每个 lob 字段内
    容以单独文件方式保存在磁盘上,在导出的主数据文件中记录的是 lob 文件相
    对于主数据文件的相对路径。
    示例:
    ./orato8a --encoding=base64 或./orato8a --encoding=url
    或者
    ./orato8a -Ebase64 或./orato8a -Eurl
    说明:
    参数全称 参数简称 取值范围 默认值
    encoding E text
    base64
    url
    text
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 49 -
    3.3.5.28 help
    功能:
    该参数用于查看 orato8a 命令参数的帮助信息。
    示例:
    --help
    说明:
    参数全称 参数简称 取值范围 默认值
    help 无 无 无
    3.3.5.29 version
    功能:
    该参数用于查看 orato8a 工具的版本信息。
    示例:
    --version
    说明:
    参数全称 参数简称 取值范围 默认值
    version V 无 无
    3.3.6 示例说明
    为了演示,在 oracle 的 ssbm 用户中,创建表 lineorder,结构如下:
    SQL> DESC lineorder;
    GBase 8a MPP Cluster 数据抽取工具手册
  • 50 - 南大通用数据技术股份有限公司
    在这个表中,已经加载一个 scale 的测试数据。
    SQL> SELECT COUNT(*) FROM lineorder;

    COUNT(*)

    6001215
    3.3.6.1 并行方法导出全表数据
    执行 orato8a,将 table_name 参数设置要导出的表名,parallel 参数可设
    置并行度(<=CPU 核数),即可快速导出全表数据。
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name=lineorder
    -- file=/home/oracle/lineorder.txt -- field=";" -- format=3 3 -- parallel=4
    export columns: 17
    export rows: 6001215
    export time: 31 sec
    process ok!
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 51 -
    $ wc - - l lineorder.txt

  • lineorder.txt
    可看出导出的文件包含 6001215 行数据。
    3.3.6.2 设定字段包围符的示例
    导出数据时,只有指定了 format 参数为 3 时,才可以指定字段包围符。此
    参数无默认值,如果导出时不指定此参数,导出的数据不会被字段包围符包围。
    本节的示例都基于以下表结构和数据内容。
    DROP TABLE IF EXISTS message;
    COMMIT;
    CR EATE TABLE message(id int, name varchar2(20), message
    varchar2(50));
    INSERT INTO message VALUES(1,'Tom','I am Tom');
    INSERT INTO message VALUES(2,' 小明 ','HHHH"KKKK');
    INSERT INTO message VALUES(3,'Peter','Hello!Hello!');
    INSERT INTO message VALUES(4,'Yama' ,'send mail');
    INSERT INTO message VALUES(5,'Hellen','');
    INSERT INTO message VALUES(6,'','');
    INSERT INTO message VALUES(7,'Seven','a book store');
    INSERT INTO message VALUES(8,'MMEE','yes');
    INSERT INTO message VALUES(9,'George','Thank you.');
    INSERT INT O message VALUES(10,'Lastman','no message');
    COMMIT;
    3.3.6.2.1 设定可见字符为字段包围符
    本示例中,使用单引号(')作为字段包围符,导出方法如下所示:
    $ ./orato8a -- user= 'ssbm/ssbm@maya' -- table_name='message'
    -- file='./message.tbl' -- format=3 -- field='|@|' -- string_qualifier="'"
    export columns: 3
    export rows: 10
    GBase 8a MPP Cluster 数据抽取工具手册
  • 52 - 南大通用数据技术股份有限公司
    export time: 0 sec
    process ok!
    $ cat message.tbl
    '1'|@|'Tom'|@|'I am Tom'
    '2'|@|'小明'|@|'HHHH"KKKK'
    '3'|@|'Peter'|@|'Hello!Hello!'
    '4'|@|'Yama'|@|'send mail'
    '5'|@|'Hellen'|@|
    '6'|@||@|
    '7'|@|'Seven'|@|'a book store'
    '8'|@|'MMEE'|@|'yes'
    '9'|@|'George'|@|'Thank you.'
    '10'|@|'Lastman'|@|'no message'
    3.3.6.2.2 使用转义字符设定字段包围符
    本示例中,使用水平制表符(Tab)作为字段包围符,其中水平制表符用转义
    字符"\t"的方式指定,导出方法如下所示:
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='message'
    -- file='./message.tbl' -- format=3 -- field='|@|' -- string_qualifier="\ \ t"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat message.tbl
  • |@| Tom |@| I am Tom
  • |@| 小明 |@| HHHH"KKKK
  • |@| Peter |@| Hello!Hello!
  • |@| Yama |@| send mail
  • |@| Hellen |@|
  • |@||@|
  • |@| Seven |@| a book store
  • |@| MMEE |@| yes
  • |@| George |@| Thank you.
  • |@| Lastman |@| no message
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 53 -
    3.3.6.2.3 使用十六进制方式设定字段包围符
    十六进制方式指定导出参数的使用范围比较广泛,既可以指定可见字符,
    也可以指定不可见字符。
    本示例提供两种使用十六进制表示字段包围符参数的方法,这两种方法都
    是将加号(+)设置为字段包围符,使用十六进制方式表示为"\x2b"或"x'2b'",
    导出方法如下:
    示例 1:使用十六进制方式"\x2b"设定包围符
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='message'
    -- file='./message.tbl' -- format=3 -- field='|@|' -- string_qualifier="\ \ x2b"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat message.tbl
    +1+|@|+Tom+|@|+I am Tom+
    +2+|@|+小明+|@|+HHHH"KKKK+
    +3+|@|+Peter+|@|+Hello!Hello!+
    +4+|@|+Yama+|@|+send mail+
    +5+|@|+Hellen+|@|
    +6+|@||@|
    +7+|@|+Seven+|@|+a book store+
    +8+|@|+MMEE+|@|+yes+
    +9+|@|+George+|@|+Thank you.+
    +10+|@|+Lastman+|@|+no message+
    示例 2:使用十六进制方式" x'2b'"设定包围符
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='message'
    -- file='./message.tbl' -- format=3 -- field='|@|' -- string_qualifier="x'2b'"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    GBase 8a MPP Cluster 数据抽取工具手册
  • 54 - 南大通用数据技术股份有限公司
    $ cat message.tbl
    +1+|@|+Tom+|@|+I am Tom+
    +2+|@|+小明+|@|+HHHH"KKKK+
    +3+|@|+Peter+|@|+Hello!Hello!+
    +4+|@|+Yama+|@|+send mail+
    +5+|@|+Hellen+|@|
    +6+|@||@|
    +7+|@|+Seven+|@|+a book store+
    +8+|@|+MMEE+|@|+yes+
    +9+|@|+George+|@|+Thank you.+
    +10+|@|+Lastman+|@|+no message+
    3.3.6.2.4 导出数据中包含字段包围符
    如果导出数据的内容中包含字段包围符,则 orato8a 会使用字段包围符对
    数据内容进行转义,导出方法如下:
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='message'
    -- file='./message.tbl' -- format=3 -- field='|@|' -- string_qualifier="\ \ ""
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat message.tbl
    "1"|@|"Tom"|@|"I am Tom"
    "2"|@|"小明"|@|"HHHH""KKKK"
    "3"|@|"Peter"|@|"Hello!Hello!"
    "4"|@|"Yama"|@|"send mail"
    "5"|@|"Hellen"|@|
    "6"|@||@|
    "7"|@|"Seven"|@|"a book store"
    "8"|@|"MMEE"|@|"yes"
    "9"|@|"George"|@|"Thank you."
    "10"|@|"Lastman"|@|"no message"
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 55 -
    查看导出的数据内容发现,第二行数据的最后一列本来的内容为
    'HHH"KKK',由于其中包含的双引号(")与字段包围符相同,因此被使用字段包
    围符进行了转义。
    3.3.6.3 设定行分隔符的示例
    导出数据时,只有指定了 format 参数为 3 时,才可以指定行分隔符参数,
    如果不指定此参数,默认导出数据的行分隔符为'\n'。需要注意的是,行分隔
    符不能指定为与数据内容或其他控制字符相同的内容,否则可能会引起歧义,
    造成数据不能被加载回表中。本节的示例都基于以下表结构和数据内容。
    DROP TABLE IF EXISTS message;
    COMMIT;
    CREATE TABLE message(id int, name varchar2(20), message
    varchar2(50));
    INSERT INTO message VALUES(1,'Tom','I am Tom');
    INSERT INTO message VALUES(2,' 小明 ','HHHH"KKKK');
    INSERT INTO message VALUES(3,'Peter','Hello!Hello!');
    INSERT INTO message VALUES(4,'Yama','send mail');
    INSERT INTO message VALUES(5,'Hellen','');
    INSERT INTO message VALUES(6,'','');
    INSERT INTO message VALUES(7,'Seven','a book store');
    INSERT INTO messag e VALUES(8,'MMEE','yes');
    INSERT INTO message VALUES(9,'George','Thank you.');
    INSERT INTO message VALUES(10,'Lastman','no message');
    COMMIT;
    3.3.6.3.1 设定可见字符为行分隔符
    本示例中,使用下划线(_)作为行分隔符,导出方法如下;
    $ ./orato8a -- user='ssbm/ssbm@maya' -- query="select id,name from message w here
    rownum<=5;" -- file='./message.tbl' -- format=3 -- field='|' -- string_qualifier="'"
    GBase 8a MPP Cluster 数据抽取工具手册
  • 56 - 南大通用数据技术股份有限公司
    -- line_separator='_'
    export columns: 2
    export rows: 5
    export time: 0 sec
    process ok!
    $ cat message.tbl
    '1'|'Tom'_'2'|'小明'_'3'|'Peter'_'4'|'Yama'_'5'|'Hellen'_
    3.3.6.3.2 使用转义字符设定行分 隔符
    本示例中,使用转义符的方式指定一个不可见字符为行分隔符,这个不可
    见字符表示系统铃音,转义符表示为'\a',导出方法如下:
    $ ./orato8a -- user='ssbm/ssbm@maya' -- query="select id,name from message where
    rownum>=5;" -- file='./message.tbl' -- format=3 -- field='|' -- string_qualifier="'"
    -- line_separator='\ \ a'
    export columns: 2
    export rows: 5
    export time: 0 sec
    process ok!
    $ cat message.tbl
    '1'|'Tom''2'|'小明''3'|'Peter''4'|'Yama''5'|'Hellen'
    由于是不可见字符,所以直接用 cat 命令查看不到该字符,使用-e 参数查
    看结果如下:
    $ cat message.tbl
    '1'|'Tom'^G'2'|'M-eM-0M-^OM-fM-^XM-^N'^G'3'|'Peter'^G'4'|'Yama'^G'5'|'Helle
    n'^G
    其中表示为'^G'的部分即为我们指定的行分隔符'\a'。
    3.3.6.3.3 使用十六进制方式设定行分隔符
    本示例中,提供两种使用十六进制表示行分隔符的方法,这两种方法都使
    用'\n'作为行分隔符,使用十六进制方式表示为"\x0a"或"x'0a'",导出方法如
    下:
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 57 -
    示例 1:使用十六进制方式"\x0a "设定行分隔符
    $ ./orato8a -- user='ssbm/ssbm@maya' -- query="select * from message;"
    -- file='./message.tbl' -- format =3 -- field='|' -- line_separator="\ \ x0a"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat message.tbl
    1|Tom|I am Tom
    2|小明|HHHH"KKKK
    3|Peter|Hello!Hello!
    4|Yama|send mail
    5|Hellen|
    6||
    7|Seven|a book store
    8|MMEE|yes
    9|George|Thank you.
    10|Lastman|no message
    示例 2:使用十六进制方式" x'0a'"设定行分隔符
    $ ./orato8a -- user='ssbm/ssbm@maya' -- query="select * from message;"
    -- file='./message.tbl' -- format=3 -- field='|' -- line_separator="x'0a'"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat message.tbl
    1|Tom|I am Tom
    2|小明|HHHH"KKKK
    3|Peter|Hello!Hello!
    4|Yama|send mail
    5|Hellen|
    6||
    7|Seven|a book store
    8|MMEE|yes
    GBase 8a MPP Cluster 数据抽取工具手册
  • 58 - 南大通用数据技术股份有限公司
    9|George|Thank you.
    10|Lastman|no message
    3.3.6.4 设定 L NULL 值的示例
    导出数据时,只有指定了 format 参数为 3 时才可以指定 NULL 值,如果导
    出时不指定此参数,数据中的 NULL 值导出为空字符串。需要注意的是,NULL
    值不能指定为与数据内容或其他控制字符相同的内容,否则可能会引起歧义,
    造成数据不能被加载回表中。本节的示例都基于以下表结构和数据内容。
    DROP TABLE IF EXISTS message;
    COMMIT;
    CREATE TABLE message(id int, name varchar2(20), message
    varchar2(50));
    INSERT INTO message VALUES(1,'Tom','I am Tom');
    INSERT INTO message VALUES (2,' 小明 ','HHHH"KKKK');
    INSERT INTO message VALUES(3,'Peter','Hello!Hello!');
    INSERT INTO message VALUES(4,'Yama','send mail');
    INSERT INTO message VALUES(5,'Hellen','');
    INSERT INTO message VALUES(6,'','');
    INSERT INTO message VALUES(7,'Seven','a book store ');
    INSERT INTO message VALUES(8,'MMEE','yes');
    INSERT INTO message VALUES(9,'George','Thank you.');
    INSERT INTO message VALUES(10,'Lastman','no message');
    COMMIT;
    3.3.6.4.1 设定可见字符串表示 L NULL 值
    本示例中,设定将数据中的 NULL 值表示为'%null%',导出方法如下:
    $ ./orato8a -- user='ssbm/ssbm@maya' -- ta ble_name='message'
    -- file='./message.tbl' -- format=3 -- field=';' -- null_value='%null%'
    export columns: 3
    export rows: 10
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 59 -
    export time: 0 sec
    process ok!
    $ cat message.tbl
    1;Tom;I am Tom
    2;小明;HHHH"KKKK
    3;Peter;Hello!Hello!
    4;Yama;send mail
    5;Hellen;%null%
    6;%null%;%null%
    7;Seven;a book store
    8;MMEE;yes
    9;George;Thank you.
    10;Lastman;no message
    3.3.6.4.2 使用转义字符设定 L NULL 值
    本示例中,设定将数据中的NULL值导出为'\tnull\\' (即一个水平制表符,
  • 个字母 null,和一个反斜线\),导出方法如下:
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='message'
    -- file='./message.tbl' -- fo rmat=3 -- field=';' -- null_value='\ \ tnull\ \\ \' '
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat message.tbl
    1;Tom;I am Tom
    2;小明;HHHH"KKKK
    3;Peter;Hello!Hello!
    4;Yama;send mail
    5;Hellen; null\
    6; null\; null\
    7;Seven;a book store
    8;MMEE;yes
    9;George;Thank you.
    10;Lastman;no message
    GBase 8a MPP Cluster 数据抽取工具手册
  • 60 - 南大通用数据技术股份有限公司
    3.3.6.4.3 使用十六进制方式设定 L NULL 值
    本示例中,提供两种使用十六进制表示 NULL 值的方法,这两种方法都使用
    一个垂直制表符和一个系统铃音符表示 NULL 值,使用十六进制方法表示为
    "\x0b\x07"或"x'0b07'",导出方法如下:
    示例 1:使用十六进制方式"\x0b\x07"设定 NULL 值
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='messag e'
    -- file='./message.tbl' -- format=3 -- field=';' -- null_value="\ \ x0b\ \ x07"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    由于导出的数据文件中包含不可见字符,因此我们使用 cat 命令的-e 参数
    来将文件中的不可见字符显示出来,垂直制表符在这种方式下显示为^K,系统
    铃音显示为^G:
    $ cat - - e message.tbl
    1;Tom;I am Tom$
    2;M-eM-0M-^OM-fM-^XM-^N;HHHH"KKKK$
    3;Peter;Hello!Hello!$
    4;Yama;send mail$
    5;Hellen;^K^G$
    6;^K^G;^K^G$
    7;Seven;a book store$
    8;MMEE;yes$
    9;George;Thank you.$
    示例 2:使用十六进制方式" x'0b07'"设定 NULL 值
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='message'
    -- file=' ./message.tbl' -- format=3 -- field=';' -- null_value="x'0b07'"
    export columns: 3
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 61 -
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat - - e message.tbl
    1;Tom;I am Tom$
    2;M-eM-0M-^OM-fM-^XM-^N;HHHH"KKKK$
    3;Peter;Hello!Hello!$
    4;Yama;send mail$
    5;Hellen;^K^G$
    6;^K^G;^K^G$
    7;Seven;a book store$
    8;MMEE;yes$
    9;George;Thank you.$
    10;Lastman;no message$
    3.3.6.5 导出非登录用户的表数据
    orato8a 导出数据时,将--user 参数指定的内容称为登录用户,导出数据
    时,以该参数指定的用户名及其他相关连接参数登录 oracle 数据库进行数据导
    出。如果想要导出非登录用户创建的表的数据,则还需要通过--owner_name 参
    数指定创建表的用户的用户名。假设我们要用 expdata 用户导出 ssbm 用户创建
    的表 message,则首先我们需要对 expdata 用户授予对 dba_extents 和
    dba_objects 表的 select 权限,orato8a 导出数据的登录用户都必须有对这两
    个表的 select 权限,然后还需要对 expdata 用户授予对 message 表的 select
    权限。授权方法如下:
    首先以系统管理员身份创建一个普通用户 expdata:
    SQL> conn /as sysdba;
    Connected.
    SQL> create user expdata identified by hello;
    User created.
    SQL> alter user expdata account unlock;
    GBase 8a MPP Cluster 数据抽取工具手册
  • 62 - 南大通用数据技术股份有限公司
    User altered.
    SQL> grant create session to expdata;
    Grant succeeded.
    然后仍然使用系统管理员身份,对 expdata 授予对 dba_extents 和
    dba_objects 表的 select 权限:
    SQL> grant select on dba_extents to expdata;
    Grant succeeded.
    SQL> grant s elect on dba_objects to expdata;
    Grant succeeded.
    最后还要用 ssbm 用户对 expdata 用户授予对 message 表的 select 权限:
    SQL> conn ssbm/ssbm; ;
    Connected.
    SQL> grant select on message to expdata;
    导出方法为:
    $ ./orato8a -- user='expdata/hello@maya' -- table_name='message'
    -- file='./message.t bl' -- format=3 3 -- field='@' -- owner_name="ssbm"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    $ cat message.tbl
    1@Tom@I am Tom
    2@小明@HHHH\"KKKK
    3@Peter@Hello!Hello!
    4@Yama@send mail
    5@Hellen@\N
    6@\N@\N
    7@Seven@a book store
    8@MMEE@yes
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 63 -
    9@George@Thank you.
    10@Lastman@no message
    3.3.6.6 导出含 b clob 或 或 b blob 类型字段的表数据
    本示例中,提供将超过 32kB 的 clob 或 blob 字段数据导出为不固定长度文
    本文件的方法。由于 clob 或 blob 字段中可能包含列分隔符或换行符,因此需
    要使用包围符,导出方法如下:
    $ ./orato8a -- user='ssbm/ssbm@maya' -- table_name='message' -- file='./message.tbl'
    -- format=3 -- field=';' --b b lob_conf= orato8a.xml -- string_qualifier="\ \ x2b"
    export columns: 3
    export rows: 10
    export time: 0 sec
    process ok!
    3.3.6.7 将 将 e oracle 中的数据以不落地方式直接导入到
    a GBase 8a 中
    本示例中,提供将 oracle 中的数据以不落地方式直接导入到 GBase 8a 中
    的方法。当指定 table_fields、gbase_table_fields、gbase_db_name、
    gbase_table_name 参数之一时,将忽略 file、format、field、
    string_qualifier、line_separator、null_value、blob_conf、task_number
    参数,会抽取 oracle 中的数据后直接导入到 GBase 8a 中。
    在这种方式下,gbase_db_name、gbase_table_name 参数不允许为空。作
    为迁移来源的 oracle 表的字段数和作为迁移目标的 GBase 8a 表的字段数必须
    相同。如源表和目标表的字段数不同,需要指定 table_fields 和
    gbase_table_fields 参数,字段的映射关系可通过 table_fields 和
    gbase_table_fields 两个参数中的字段顺序指定,缺省时使用 oracle 的结果
    集字段列表和 GBase 8a 的表定义的字段列表一一对应。
    $ ./orato8a -- user='ssbm/ssbm@ TEST ' -- query =' select * from region '
    -- gbase_db_name =" test" " – gbase_table_name=" " region_t" "
    GBase 8a MPP Cluster 数据抽取工具手册
  • 64 - 南大通用数据技术股份有限公司
    export columns: 3
    export rows: 5
    export time: 1 sec
    process ok!
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 65 -
  • 4 a db2to8a 工具 使用
    4.1.1 简介
    db2to8a 是一个可以快速、高效地从 db2 数据库系统中抽取出数据的专用工
    具,抽取出来的数据可以保存到指定的文件中。
    4.1.2 安装文件
    db2to8a 是一个独立运行的数据抽取工具,需要将此工具部署在可以访问到
    db2 的客户机上,或者直接与 db2 server 部署在一台服务上。
    db2to8a 安装包以 tar.bz2 的压缩形式提供。例如:
    db2to8a_24816_Redhat6.2_x86_64.tar.bz2。
    在该 tar.bz2 文件中
    db2to8a:代表工具的名称;
    24816:代表该工具的版本号;
    Redhat6.2:代表该工具运行的操作系统为 Red hat 6.2
    x86_64:代表该工具是一个运行在 64 位操作系统下的工具;
    4.1.3 获取安装文件并解压安装
    我们以 64位的linux操作系统为例,为用户介绍获取db2to8a后如何解压安装
    它。
    将安装光盘放入光驱,使用 mount 命令将光驱挂载到 Linux 文件系统。加载光
    驱命令如下(通常,加载光驱需要 root 用户):

    mkdir /mnt/cdrom

    GBase 8a MPP Cluster 数据抽取工具手册

  • 66 - 南大通用数据技术股份有限公司

    mount /dev/cdrom /mnt/cdrom

    将光驱中的安装包的压缩文件(如:
    db2to8a_24816_Redhat6.2_x86_64.tar.bz2)复制到文件系统的某个目录下。
    进入该目录(假设将安装包放在了/root 目录下),在命令行模式下使用 tar
    命令进行解压。解压命令如下:

    tar xfj j db2to8a_24816_Redhat6.2_x86_64.tar.bz2

    NM_CONTROLLED=no
    解压后,将会在解压目录下直接生成一个可执行的 db2to8a 的程序。
    $ ll
    总用量 2068
    ……
    -rw-r--r-- 1 root root 1380535 8 月 23 01:08 db2to8a
    -rw-r--r-- 1 root root 663929 8 月 22 17:13
    db2to8a_24816_Redhat6.2_x86_64.tar.bz2
    4.1.4 语法格式
    ./db2to8a parameter_1 parameter_2 ... parameter_n
    parameter_1:db2to8a的参数,一个 db2to8a后可以使用多个参数,参数可以
    使用全称格式,也可以使用简称格式。
    全称格式:--parameter_1=参数值,=两边不能有空格;
    简称格式:-parameter_1 参数值;简写格式时,参数和参数值之间不能有空
    格。
    特别说明:
    执行 db2to8a 的用户,必须是可以访问 db2 数据库的用户。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 67 -
    下面通过一个简单的示例来说明 db2to8a 工具如何从 db2 中抽取数据,在本示
    例中,首先登录 db2,然后写一条查询 SQL,该 SQL 在 test 库中查询表 t 中的
    一条数据;退出 db2,使用 db2to8a 工具抽取查询 SQL 的结果数据,以验证
    db2to8a 抽取数据的功能。
    $ db2
    (c) Copyright IBM Corporation 1993,2007
    Command Line Processor for DB2 Client 9.7.1
    You can issue database manager commands and SQL statements from the command
    prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd
    For general help, type: ?.
    For command help, type: ? command, where command can be
    the first few keywords of a database manager command. For example:
    ? CATALOG DATABASE for help on the CATALOG DATABASE command
    ? CATALOG for help on all of the CATALOG commands.
    To exit db2 interactive mode, type QUIT at the command prompt. Outside
    interactive mode, all commands must be prefixed with 'db2'.
    To list the current command option settings, type LIST COMMAND OPTIONS.
    For more detailed help, refer to the Online Reference Manual.
    db2 => connect to test
    Database Connection Information
    Database server = DB2/LINUXX8664 9.7.1
    SQL authorization ID = DB2INST1
    Local database alias = TEST
    db2 => SELECT * FROM T fetch first 1 rows only
    A B C D E
    GBase 8a MPP Cluster 数据抽取工具手册

  • 68 - 南大通用数据技术股份有限公司


    -3 0.93 helloworld +5.69900E+002 03/19/2013

  • record(s) selected.
    然后退出 db2,使用 db2to8a 抽取上面查询的数据。
    $ cd test
    $ ./db2to8a - - D'test' - - u'db 2inst1' - - p'db2inst1' - - q"select * from t fetch first
  • rows only" - - f'data1.txt' - - m'0' - - e'|'
    you machine is Little endian!
    Connecting to test...
    Connected to test.
    --- unload [text file] mode ---
    --- field="|" ---
  • rows exported at 2013-08-31 14:18:24
  • rows exported at 2013-08-31 14:18:24
    output file data1.txt closed
    export: 1 rows.
    export: 5 columns.
    export time: 0.01 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    -3|0.93|helloworld|5.699000E+02|2013-03-19
    导出的数据源源文件中的数据和在 db2 系统中查询的数据一致。
    4.1.5 参数说明
    4.1.5.1 db_name
    功能:
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 69 -
    指定数据库名称。
    示例:
    --db_name='test'
    或者
    -D'test'
    说明:
    参数全称 参数简称 取值范围 默认值
    db_name D 无 无
    4.1.5.2 user
    功能:
    指定访问 db2 数据库的用户名。
    示例:
    --user='db2user'
    或者
    -u'db2user'
    说明:
    参数全称 参数简称 取值范围 默认值
    user u 无 无
    4.1.5.3 passw ord
    功能:
    指定访问 db2 数据库的用户密码。
    示例:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 70 - 南大通用数据技术股份有限公司
    --password='db2user'
    或者
    -p'db2user'
    说明:
    参数全称 参数简称 取值范围 默认值
    password p 无 无
    4.1.5.4 query
    功能:
    指定导出数据所使用的查询 SQL 语句。由于查询语句常有空格,该参数在指定
    时,需要用双引号限定。
    另外,查询语句应该为一个符合 DB2 语法的 SQL,并且只返回一组结果集。
    示例:
    --query="select * from lineorder"
    或者
    -q"select * from lineorder"
    说明:
    参数全称 参数简称 取值范围 默认值
    query q 无 无
    4.1.5.5 file
    功能:
    该参数指定导出的数据文件名。
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 71 -
    该参数可以指定一个包含绝对路径的文件名,也可以指定一个包含相对路径的
    文件名。当该参数指定一个不包含路径的文件名时,该文件被保存在当前的路
    径中。
    示例:
    --file='aaa.txt'
    --file='/home/lina/aaa.txt'
    或者
    -f'aaa.txt'
    -f'/home/lina/aaa.txt'
    说明:
    参数全称 参数简称 取值范围 默认值
    file f 无 无
    4.1.5.6 format
    功能:
    该参数控制导出数据文件的数据格式。
    当设置为 3 时,导出数据为无转义的文本格式;
    示例:
    --format='3'
    或者
    -m'3'
    说明:
    参数全称 参数简称 取值范围 默认值
    format m 3 3
    GBase 8a MPP Cluster 数据抽取工具手册
  • 72 - 南大通用数据技术股份有限公司
    4.1.5.7 string_qualifier
    功能:
    该参数用于设定字段包围符,只在 format=3 时,该参数有效。如果设定字段
    包围符,所有字段都会加上字段包围符。
    字段包围符可以可使用十六进制来指定。
    示例:
    --string_qualifier ='@'
    或者
    -s'@'
    如果设定为十六进制的字段包围符,则命令参数后面用双引号扩起十六进制
    值。
    示例:
    --string_qualifier ="x'62'"
    或者
    -s"x'62'"
    说明:
    参数全称 参数简称 取值范围 默认值
    string_qualifier s 一个字符 无
    4.1.5.8 field
    功能:
    该参数用于设定字段分隔符。文本格式可使用十六进制。
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 73 -
    当使用 format=3 时,必须设置该参数的值。
    示例:
    --field ="\x2c"
    或者
    -e"\x2c"
    说明:
    参数全称 参数简称 取值范围 默认值
    field e 15 个字符 格式 3:无
    4.1.5.9 line_separator
    功能:
    该参数用于设定行分隔符。只在 format=3 时,该参数有效。
    示例:
    --line_separator ='@'
    或者
    -l'@'
    如果设定为十六进制的行分隔符,则命令参数后面用双引号扩起十六进制值。
    示例:
    --line_separator ="x'62'"
    或者
    -l"x'62'"
    说明:
    GBase 8a MPP Cluster 数据抽取工具手册
  • 74 - 南大通用数据技术股份有限公司
    参数全称 参数简称 取值范围 默认值
    line_separator l 单个字符 '\n'
    注:format=5 加载模式下只支持单字节换行符。
    4.1.5.10 null_value
    功能:
    该参数用于设定 NULL 值。
    只在 format=3 时,该参数有效,但是无默认值。
    示例:
    --null_value ='\N'
    或者
    -n'\N'
    说明:
    参数全称 参数简称 取值范围 默认值
    null_value n 最大 15 个字符 format=3: 无
    4.1.5.11 help
    功能:
    该参数用于查看 db2to8a 命令参数的帮助信息。
    示例:
    --help
    说明:
    参数全称 参数简称 取值范围 默认值
    help 无
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 75 -
    4.1.6 示例说明
    4.1.6.1 设定字段包围符的示例
    db2 数据库系统中创建如下表及数据:
    CREATE DATABASE test
    connect to test
    drop table t
    CREATE TABLE t (a int,b decimal(15,2), c varchar(20),d real,e date)
    INSERT INTO t VALUES (- - 3,0.93,'helloworld',569.9,'2013- - 03- - 19')
    INSERT INTO t VALUES (- - 3,0.93,'helloworld',569.9,'2013- - 03- - 19')
    IN SERT INTO t VALUES (19,- - 15.69,'ff',157,'1999- - 11- - 16')
    INSERT INTO t VALUES (20,16,'he\ \ n%\ \n n\ \t t\ \ t$\ \ n',52,'1982- - 06- - 03')
    INSERT INTO t VALUES (20,16,'\ \n n\ \ nhe\ \ t%$\ \ t',23,'1982- - 06- - 03')
    INSERT INTO t VALUES (58,12.30,'xyz abc',13.69,'1978- - 12- - 20')
    INSERT INTO t VAL UES (991,- - 0,' 北京 ',1.230000E+01,'1989- - 06- - 07')
    4.1.6.2 导出数据中包含包围符
    本示例中,导出数据中包含设定的包围符,并且将包围符设定为可见字符。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t"
    • f'data1.txt' - - m'3' - - e'|' - - l'\ \ n' - - s'h'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [text file] mode ---
      --- field="|" ---
  • rows exported at 2013-08-30 13:33:29
  • rows exported at 2013-08-30 13:33:29
    GBase 8a MPP Cluster 数据抽取工具手册
  • 76 - 南大通用数据技术股份有限公司
    output file data1.txt closed
    export: 7 rows.
    export: 5 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    h-3h|h0.93h|hhhelloworldh|h5.699000E+02h|h2013-03-19h
    h-3h|h0.93h|hhhelloworldh|h5.699000E+02h|h2013-03-19h
    h19h|h-15.69h|hffh|h1.570000E+02h|h1999-11-16h
    h20h|h16.00h|hhhe\n%\n\t\t$\nh|h5.200000E+01h|h1982-06-03h
    h20h|h16.00h|h\n\nhhe\t%$\th|h2.300000E+01h|h1982-06-03h
    h58h|h12.30h|hxyz abch|h1.369000E+01h|h1978-12-20h
    h991h|h0.00h|h 北京 h|h1.230000E+01h|h1989-06-07h
    4.1.6.3 设定为不可见字符的包围符
    本示例中,导出数据中包含设定的包围符,并且将包围符设定不可见的字符。
    \x09 代表制表位 Tab 的功能,导出的数据中“xyz abc”这个字
    符串中,xyz 和 abc 之间包含一个制表位 Tab 的间隔。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t"
    • f'data1.txt' - - m'3' - - e'|' - - l'\ \ n' - - s'\ \ x09'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [text file] mode ---
      --- field="|" ---
  • rows exported at 2013-08-30 13:34:18
  • rows exported at 2013-08-30 13:34:18
    output file data1.txt closed
    export: 7 rows.
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 77 -
    export: 5 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    由于包含的数据列比较多,本示例中的导出结果,采用分段截图显示。
    首先,展示前两列的导出结果
    -3 | 0.93 |
    -3 | 0.93 |
  • | -15.69 |
  • | 16.00 |
  • | 16.00 |
  • | 12.30 |
  • | 0.00 |
    最后,展示剩余列的导出结果
    4.1.6.4 导出数据中不包含所设定的包围
    符(1 1 )
    本示例中,导出数据中不包含设定的包围符,并且将包围符设定为可见字符。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t"
    • f'data1.txt' - - m'3 ' - - e'|' - - l'\ \ n' - - s'"'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      GBase 8a MPP Cluster 数据抽取工具手册
  • 78 - 南大通用数据技术股份有限公司
    --- unload [text file] mode ---
    --- field="|" ---
  • rows exported at 2013-08-30 13:33:51
  • rows exported at 2013-08-30 13:33:51
    output file data1.txt closed
    export: 7 rows.
    export: 5 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    "-3"|"9.30000000000000E-001"|"helloworld"|"569.9"|"12:15:19"
    "-3"|"9.30000000000000E-001"|"helloworld"|"569.9"|"12:15:19"
    "19"|"-1.56900000000000E+001"|"^f^f^"|"abcabc"|"22:17:26"
    "20"|"1.60000000000000E+001"|"he\n%\n\t\t$\n"|"dasfal ""'/\^5"|"09:15:21"
    "20"|"1.60000000000000E+001"|"\n\nhe\t%$\t"|"dasdf dasf;l "|"17:16:29"
    "58"|"1.23000000000000E+001"|"xyz abc"|"erEERE"|"00:00:00"
    "991"|"0.00000000000000E+000"|"北^^ffd#$京天 dt 津
    "|"0123"|"23:59:59"
    ||"null"|"null"|"17:16:29"
    |||"null"|"22:17:26"
    4.1.6.5 导出数据中不包含所设定的包围
    符(2 2 )
    本示例中,导出数据中不包含设定的包围符,并且将包围符设定为十六进制的
    字符。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t"
    • f'data1.txt' - - m'3' - - e'|' - - l'\ \ n' - - s'\ \ x61'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      GBase 8a MPP Cluster 数据抽取工具手册
      南大通用数据技术股份有限公司 - 79 -
      --- unload [text file] mode ---
      --- field="|" ---
  • rows exported at 2013-08-30 13:34:18
  • rows exported at 2013-08-30 13:34:18
    output file data1.txt closed
    export: 7 rows.
    export: 5 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    a-3a|a0.93a|ahelloworlda|a5.699000E+02a|a2013-03-19a
    a-3a|a0.93a|ahelloworlda|a5.699000E+02a|a2013-03-19a
    a19a|a-15.69a|affa|a1.570000E+02a|a1999-11-16a
    a20a|a16.00a|ahe\n%\n\t\t$\na|a5.200000E+01a|a1982-06-03a
    a20a|a16.00a|a\n\nhe\t%$\ta|a2.300000E+01a|a1982-06-03a
    a58a|a12.30a|axyz aabca|a1.369000E+01a|a1978-12-20a
    a991a|a0.00a|a 北京 a|a1.230000E+01a|a1989-06-07a
    4.1.6.6 设定行分隔符的示例
    db2 数据库系统中创建如下表及数据:
    CREATE DATABASE test
    connect to test
    DROP TABLE t
    CREATE TABLE t (a int,b decimal(15,2), c varchar(20),d real,e date)
    INSERT INTO t VA LUES (- - 3,0.93,'helloworld',569.9,'2013- - 03- - 19')
    INSERT INTO t VALUES (- - 3,0.93,'helloworld',569.9,'2013- - 03- - 19')
    INSERT INTO t VALUES (19,- - 15.69,'ff',157,'1999- - 11- - 16')
    INSERT INTO t VALUES (20,16,'he\ \ n%\ \n n\ \t t\ \ t$\ \ n',52,'1982- - 06- - 03')
    INSERT INTO t VALUES (20,16,'\ \n n\ \ nhe\ \ t%$\ \ t',23,'1982- - 06- - 03')
    INSERT INTO t VALUES (58,12.30,'xyz abc',13.69,'1978- - 12- - 20')
    GBase 8a MPP Cluster 数据抽取工具手册
  • 80 - 南大通用数据技术股份有限公司
    INSERT INTO t VALUES (991,- - 0,' 北京 ',1.230000E+01,'1989- - 06- - 07')
    4.1.6.7 导出数据中不包含行分隔符(1 1 )
    本示例中,导出数据中不包含设定的行分隔符,并且将行分隔符设定为可见的
    字符。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t"
    • f'data1.txt' - - m'3' - - e'|' - - l's'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [text file] mode ---
      --- field="|" ---
  • rows exported at 2013-08-30 13:35:47
  • rows exported at 2013-08-30 13:35:47
    output file data1.txt closed
    export: 7 rows.
    export: 5 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    -3|0.93|helloworld|5.699000E+02|2013-03-19s-3|0.93|helloworld|5.699000E+02|
    2013-03-19s19|-15.69|ff|1.570000E+02|1999-11-16s20|16.00|he\n%\n\t\t$\n|5.20000
    0E+01|1982-06-03s20|16.00|\n\nhe\t%$\t|2.300000E+01|1982-06-03s58|12.30|xyz
    abc|1.369000E+01|1978-12-20s991|0.00|北京|1.230000E+01|1989-06-07s
    4.1.6.8 导出数据中不包含行分隔符 (2 2 )
    本示例中,导出数据中不包含设定的行分隔符,并且将行分隔符设定为不可见
    的字符。
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 81 -
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t"
    • f'data1.txt' - - m'3' - - e'|' - - l'\ \ n'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [oracle text file] mode ---
      --- field="|" ---
      --- record="
      " ---
  • rows exported at 2013-10-18 17:19:13
  • rows exported at 2013-10-18 17:19:13
    output file ./wzx/data1.txt closed
    export: 7 rows.
    export: 5 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    -3|0.93|helloworld|5.699000E+02|2013-03-19
    -3|0.93|helloworld|5.699000E+02|2013-03-19
    19|-15.69|ff|1.570000E+02|1999-11-16
    20|16.00|he\n%\n\t\t$\n|5.200000E+01|1982-06-03
    20|16.00|\n\nhe\t%$\t|2.300000E+01|1982-06-03
    58|12.30|xyz abc|1.369000E+01|1978-12-20
    991|0.00|北京|1.230000E+01|1989-06-07
    4.1.6.9 导出数据中不包含行分隔符 (3 3 )
    本示例中,导出数据中不包含设定的行分隔符,并且将行分隔符设定为十六进
    制的字符。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t"
    GBase 8a MPP Cluster 数据抽取工具手册
  • 82 - 南大通用数据技术股份有限公司
    • f'data1.txt' - - m'3' - - e' |' - - l"x'62'"
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [oracle text file] mode ---
      --- field="|" ---
      --- record="x'62'" ---
  • rows exported at 2013-10-18 17:21:49
  • rows exported at 2013-10-18 17:21:49
    output file ./wzx/data1.txt closed
    export: 7 rows.
    export: 5 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    -3|0.93|helloworld|5.699000E+02|2013-03-19b-3|0.93|helloworld|5.699000E+02|
    2013-03-19b19|-15.69|ff|1.570000E+02|1999-11-16b20|16.00|he\n%\n\t\t$\n|5.20000
    0E+01|1982-06-03b20|16.00|\n\nhe\t%$\t|2.300000E+01|1982-06-03b58|12.30|xyz
    abc|1.369000E+01|1978-12-20b991|0.00|北京|1.230000E+01|1989-06-07b
    4.1.6.10 设定字段分隔符的示例
    db2 数据库系统中创建如下表及数据:
    CREATE DATABASE test
    connect to test
    DROP TABLE t1
    CREATE TABLE t1(i int,j bigint,c char(20),v varchar(255))
    INSERT INTO t1 VALUES(12,34,'ajhsa','7shuusa8us')
    INSERT INTO t1(i) VALUES(89)
    INSERT INTO t1 VALUES(0,90,'sniuda','djkjkdsd')
    INSERT I NTO t1 VALUES(109,0,' ',' ')
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 83 -
    INSERT INTO t1
    VALUES(850266,9055655988595,'iu92uijw9i218uiw9w','wjijs')
    INSERT INTO t1(i,c,v) VALUES(- - 19982921,'s','abc')
    4.1.6.11 设置字段分隔符(1 1 )
    本示例中,导出数据文件为普通文本格式,同时设置字段分隔符为'|'。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t1" - - m'0'
    • e'|' - - f'data1.txt'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [text file] mode ---
      --- field="|" ---
  • rows exported at 2013-08-30 13:40:47
  • rows exported at 2013-08-30 13:40:47
    output file t13.dat10 closed
    export: 6 rows.
    export: 4 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    12|34|ajhsa |7shuusa8us
    89|\N|\N|\N
    0|90|sniuda |djkjkdsd
    109|0| |
    850266|9055655988595|iu92uijw9i218uiw9w |wjijs
    -19982921|\N|s |abc
    4.1.6.12 设置字段分隔符(2 2 )
    GBase 8a MPP Cluster 数据抽取工具手册
  • 84 - 南大通用数据技术股份有限公司
    本示例中,导出数据文件为 oracle 的文本格式,同时设定字段分隔符为';'。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t1" - - m'3'
    • e';' - - s'"' - - n'NULL' - - f'data1.txt'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [text file] mode ---
      --- field=";" ---
  • rows exported at 2013-08-30 13:41:14
  • rows exported at 2013-08-30 13:41:14
    output file t13.dat11 closed
    export: 6 rows.
    export: 4 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    "12";"34";"ajhsa ";"7shuusa8us"
    "89";"NULL";"NULL";"NULL"
    "0";"90";"sniuda ";"djkjkdsd"
    "109";"0";" ";" "
    "850266";"9055655988595";"iu92uijw9i218uiw9w ";"wjijs"
    "-19982921";"NULL";"s ";"abc"
    4.1.6.13 导出数据中包含空值的示例
    db2 数据库系统中创建如下表及数据:
    CREATE DATABASE test
    connect to test
    DROP TABLE t1
    CREATE TABLE t1(i int,j bigint,c char(20),v varchar(255))
    GBase 8a MPP Cluster 数据抽取工具手册
    南大通用数据技术股份有限公司 - 85 -
    INSERT INTO t1 VALUES(12,34,'ajhsa','7shuusa8us')
    INSERT INTO t1(i) VALUES(89)
    INSERT INTO t1 VALUES(0,90,'sniuda','djkjkdsd')
    INSERT INTO t1 VALUES(109,0,' ',' ')
    INSERT INTO t1
    VALUES(8 50266,9055655988595,'iu92uijw9i218uiw9w','wjijs')
    INSERT INTO t1(i,c,v) VALUES(- - 19982921,'s','abc')
    4.1.6.14 设置空值参数值(1 1 )
    本示例中,导出数据文件为普通文本格式时,数据中的空值设定为默认的\N。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t1" - - m'0'
    • e'|$|' - - f'data1.txt'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [text file] mode ---
      --- field="|$|" ---
  • rows exported at 2013-08-30 13:15:44
  • rows exported at 2013-08-30 13:15:44
    output file t11.dat11 closed
    export: 6 rows.
    export: 4 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat t11.dat11
    12|$|34|$|ajhsa |$|7shuusa8us
    89|$|\\N|$|\N|$|\N
    0|$|90|$|sniuda |$|djkjkdsd
    109|$|0|$| |$|
    850266|$|9055655988595|$|iu92uijw9i218uiw9w |$|wjijs
    GBase 8a MPP Cluster 数据抽取工具手册
  • 86 - 南大通用数据技术股份有限公司
    -19982921|$|\\N|$|s |$|abc
    4.1.6.15 设置空值参数值(2 2 )
    本示例中,导出数据文件为 oracle 的文本格式时,设定数据中的空值为
    '\\N'。
    $ ./db2to8a - - D'test' - - u'db2inst1' - - p'db2inst1' - - q"select * from t1" - - m'3'
    • e'|$|' - - n'\ \\ \ N' - - f'data1.txt'
      you machine is Little endian!
      Connecting to test...
      Connected to test.
      --- unload [text file] mode ---
      --- field="|$|" ---
  • rows exported at 2013-08-30 13:15:32
  • rows exported at 2013-08-30 13:15:32
    output file t11.dat10 closed
    export: 6 rows.
    export: 4 columns.
    export time: 0.00 sec
    Disconnecting from test...
    Disconnected from test.
    $ cat data1.txt
    12|$|34|$|ajhsa |$|7shuusa8us
    89|$|\\N|$|\N|$|\N
    0|$|90|$|sniuda |$|djkjkdsd
    109|$|0|$| |$|
    850266|$|9055655988595|$|iu92uijw9i218uiw9w |$|wjijs
    -19982921|$|\\N|$|s |$|abc
    GBase 8a MPP Cluster 数据抽取及加载工具参考手册
  • 2 - 南大通用数据技术股份有限公司

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关资料

X社区推广