开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情 @[toc]
第二章:OceanBase产品家族及基础概念
2. 导入数据
2.8 通用数据同步框架 DataX举例
• DataX 安装后,默认目录在 /home/admin/datax3 。目录下有个文件夹 job默认存放数据迁移任务的配置文件,也可以自定义目录
• 每个任务的参数文件是一个 json 格式,主要由一个 reader 和一个 writer 组成。job 文件夹下有个默认的示例任务配置文件 job.json
2.9 DataX - CSV 文件的读写插件
2.9.1 txtreader配置示例:
2.9.2 txtwriter 配置示例:
2.10 DataX - MySQL 数据库的读写插件
针对 MySQL 数据库,用 mysqlreader 和 mysqlwriter 插件读写
2.10.1 mysqlreader 配置示例:
2.10.2 mysqlwriter 配置示例:
2.11 DataX - Oracle 数据库的读写插件
针对 Oracle 数据库,用 oraclereader 和 oraclewriter 插件来读写
2.11.1 oraclereader 配置示例:
2.11.2 oraclewriter 配置示例:
2.12 通过LOAD DATA命令导入数据
OceanBase 支持通过 LOAD DATA 命令加载外部文本文件的内容到数据库表中
Load Data 目前可以对CSV格式的文本文件进行导入,导入过程如下:
1.解析文件:OceanBase 会根据用户输入的文件名,读取文件中的数据,并且根据用户输入的并行度来决定并行或者串行解析输入文件中的数据
2.分发数据:由于 OceanBase 是分布式数据库系统,各个分区的数据可能分布在各个不同的 OBServer 上,Load Data 会对解析出来的数据进行计算,决定数据需要被发送到哪个 OBServer
3.插入数据:当目标 OBServer 收到了发送过来的数据之后,在本地执行 INSERT 操作把数据插入到对应的分区当中
2.13 Load Data选项(1)
• 并行度: /+ parallel(N)/ 选项指定加载数据的并行度,建议使用的值范围是[0 - 租户的最大CPU数] • 输入文件: INFILE 'file_name' 关键字指定输入文件的路径和文件名,目前 Load Data 只支持加载OBServer 本地的输入文件。所以,用户需要在导入之前把文件拷贝到某一个 OBServer 上,并连接文件所在的 OBServer 运行Load Data 语句 • 执行权限:用户需要授予权限才能访问机器上的文件,有两步:首先修改安全文件所在路径,设置为空(即无需检查);其次再对用户授予目录的 read 权限 • 重复数据处理:这部分指定如何处理重复的数据。Replace 表示将表中原有的数据替换成为输入文件中的数据; Ignore表示忽略掉重复的数据。Load Data 通过表的主键来判断数据是否重复,如果表不存在主键,那么 Load Data 语句就无法判断数据是否重复,Replace 和 Ignore 选项没有区别。如果用户不指定这个选项,那么遇到重复数据的时候,Load Data 语句会将出现把错误的数据记录到日志文件中
2.14 Load Data选项(2)
• 目标表选项:INTO TABLE tbl_name 关键字用于指定目标表名称。Load Data 支持分区表和非分区表 • 字段格式:这部分指定输入文件的各个字段的分隔符选项,通过 Fields | Columns 子句来指定,其中:Terminated By关键字用来指定字段的分隔符;Enclosed By 关键字指定每个字段的开始和结束是否包含了特定的字符;Escaped By 关键字用来指定字段中的通配符 • 行格式:这部分指定输入文件中每一行的开始和结束字符,通过 Lines 子句设置。 其中 Starting By用于指定每一行开始的字符;Terminated By 用户指定每一行的结束字符。IGNORE number {LINES| ROWS} 子句指定忽略掉输入文件的前 number 行数据 • 列 对 应 关 系 选 项 : 这 部分用于 指 定 目 标 表 的 各个列与输 入 文 件 的 字段之间 的 关 系 , 通 过(col_name_var [, col_name_var] ...) 关键字指定。如果用户没有指定,默认会将输入文件中的字段逐个与表中的列进行对应。如果用户通过col_name_or_user_var 关键字指定输入文件中的字段与表中列的对应关系,Load Data 会根据指定的列名与表中的列进行对应,没有被指定的列会取空值
2.15 OBLOADER导入工具
• OBLOADER 工具提供了非常灵活的命令行选项,可以在多种复杂的场景下,将结构和数据导入到 OceanBase 数据库中 • OBLOADER 主要与 OBDUMPER 搭配使用。OBLOADER 也支持如 Navicat、Mydumper 和 SQLDeveloper 等工具导出的 SQL 或 CSV 格式的文件
2.15.1 OBLOADER 主要具备以下功能特性:
• 支持导入 Schema 定义语句 • 支持导入 CSV 和 SQL 格式的数据文件 • 支持导入字节偏移量、字符串分隔和混合数据文件等复杂数据格式 • 支持配置简单的数据清洗规则 • 支持配置文件与表之间的字段映射关系 • 支持限流、防导爆、断点恢复和自动重试等特性 • 支持指定自定义的日志目录、保存坏数据和冲突数据等特性 • 支持限制模式导入数据,限制模式不依赖系统租户下的任意账号信息 • 支持 OBLOADER 从 OSS 数据导入至 OceanBase 数据库
2.15.2 OBLOADER 支持的文件格式如下所示:
• DDL 文件格式:文件中仅包含 DDL 语句 • SQL 文件格式:文件中的仅包含 INSERT 语句,记录不跨行 • MIX 混合文件格式:文件中包含 DDL 和 DML 等多种混合的语句 • POS 文件格式:文件中的数据是根据字节偏移位置产生的,不是字符偏移位置 • CUT 文件格式:文件中的数据是根据字符串分隔,区别于 CSV 格式的单个字符分隔