OBDUMPER 支持导出的文件格式
适用版本:V3.0.x、V3.1.x、V3.2.x、V3.3.x、V4.0.x、V4.1.x、V4.2.x内容类型:TechNote
OBDUMPER 支持导出的格式、它们各自的特性以及推荐使用的场景见下表:
| 格式(命令行选项) |
相关的命令行选项 |
适用的业务场景 |
CSV (--csv) CSV(Comma-Separated Values)格式是一种常用的文本文件格式,用于存储和交换数据。其具有以下两大显著特性:
- 通用性:CSV 格式是一种非常通用的数据格式,几乎所有的数据处理工具和编程语言支持和解析该格式。
- 可读性:CSV 文件以纯文本形式存储数据,每行代表一个记录,每个字段之间使用逗号进行分隔。
|
- --column-seperator:列分隔符,默认为英文逗号。
- --column-delimiter:定界符,默认为英文单引号('')。
- --with-trim
用于删除数据左右的空格字符。
- --character-set 'character_set_string'
用于指定创建数据库连接时的字符集。
- --null-string 'null_replacer_string'
用于标识将 NULL 替换为指定字符。
- --line-separator:换行符,类 UNIX 系统下默认为 '\n';Windows 系统下默认为 '\r\n'。
- --escape-character:转义符,默认为 ''。
- --skip-header:是否省略表头。
- --null-string: NULL 替换符。默认为 '\N'。
- --empty-string:空字符替换符。默认为 '\E'。
- --file-encoding 'encode_name'
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。
- --flashback-scn 'scn_number'
用于导出 SCN 事务点之后的数据。
|
适用于几乎所有的业务场景。 |
CUT (--cut) CUT 格式又称 Delimited Text,是一种与 CSV 类似的格式。其与 CSV 格式的不同点在于:
- 无定界符。
- 支持列分隔符为多个字符。
- 一般行尾以列分隔符结束。
|
- --column-splitter:列分隔符,默认为 '|'。
- --line-separator:换行符,类 UNIX 系统下默认为 '\n';Windows 系统下默认为 '\r\n'。
- --with-trim
用于删除数据左右的空格字符。
- --character-set 'character_set_string'
用于指定创建数据库连接时的字符集。
- --file-encoding 'encode_name'
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。
- --flashback-scn 'scn_number'
用于导出 SCN 事务点之后的数据。
- --escape-character:转义符,默认为 ''。
- --trail-delimiter:是否省略行尾的列分隔符。
- --null-string: NULL 替换符。默认为 '\N'。
- --empty-string:空字符替换符。默认为 '\E'。
|
参考 CSV。多用于导入由某些老式平台导出的较为灵活的数据交换格式。 |
POS(--cut) POS 格式即 Fixed-Length (固定长度)格式。与 CSV 格式不同,它使用固定长度的字段来存储数据,每个字段的长度是预定义的。
注意
- 其命令行选项仍为 CUT。在使用时,需要设置列分隔符(--column-splitter)为空字符,并通过控制文件来设置列的长度。
- 需要配合控制文件使用。
|
- --column-splitter 'split_string'
用于指定列分隔字符串。
- --line-separator 'line_separator_string'
指定行分隔字符串。
- --escape-character 'escape_char'
用于指定转义字符。
- --file-encoding 'encode_name'
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。
- --trail-delimiter
用于标识导出的数据行是否以分隔符结尾。
|
与某些仅支持定长格式的卸数平台进行交互。 |
SQL(--sql)
注意
OBDUMPER 仅支持导出单条插入语句。不支持导出为批量插入语句。
|
- --line-separator 'line_separator_string'
指定行分隔字符串。
- --character-set 'character_set_string'
用于指定创建数据库连接时的字符集。
- --null-string 'null_replacer_string'
用于标识将 NULL 替换为指定字符。
- --escape-character 'escape_char'
用于指定转义字符。
- --file-encoding 'encode_name'
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。
- --flashback-scn 'scn_number'
用于导出 SCN 事务点之后的数据。
|
适用于几乎所有的业务场景。 |
MIX (--mix) 用于导入 SQL 混合格式的文件,文件内容可以为任意 OceanBase 支持的 SQL 语法。也可以兼容性转换的方式处理 mysqldump 导出的 SQL 文件格式。 |
- --character-set 'character_set_string'
用于指定创建数据库连接时的字符集。
- --file-encoding 'encode_name'
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。
- --flashback-scn 'scn_number'
用于导出 SCN 事务点之后的数据。
- --compact-schema
用于直接使用 SHOW CREATE TABLE 的返回结果导出表定义。
|
适用于导出任意格式的 SQL 文件。兼容性更强,但对比 --sql 性能相差较大。目前的实现是将文本全部读取进内存再解析,不适合处理数据量较大的文件。 |
Parquet(--par) Parquet 是一种二进制文件格式(不可读),采用了列式存储,专为高效存储和处理大规模数据而设计。其在大数据领域中被广泛采用,并支持诸如 Apache Hadoop、Apache Spark、Apache Hive 等流行的大数据处理框架。 |
- --character-set 'character_set_string'
用于指定创建数据库连接时的字符集。
- --file-encoding 'encode_name'
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。
- --flashback-scn 'scn_number'
用于导出 SCN 事务点之后的数据。
|
需要兼顾数据压缩和导出性能的备份场景。导入导出性能基本等同于 CSV。压缩率较高。
说明
在实验环境下,压缩率的期望值在 20% 左右,数据的分布特征会极大程度地影响压缩率。例如:重复率较高的数据压缩率更高。建议开启并行写入,以达到最佳性能。
|
ORC(--orc) 与 Parquet 类似,ORC 格式也是一种二进制文件格式(不可读),旨在提供更好的查询性能和压缩率,并且被广泛应用于大数据处理领域。 |
- --character-set 'character_set_string'
用于指定创建数据库连接时的字符集。
- --file-encoding 'encode_name'
用于表示导出数据文件时使用的文件编码,该编码不是数据库编码。
- --flashback-scn 'scn_number'
用于导出 SCN 事务点之后的数据。
|
需要极致数据压缩的场景。导入导出性能稍差于 CSV,由于第三方组件(Apache ORCWriter)的已知问题,导出时需要的内存可能较高。压缩率一般高于 Parquet。但仍取决于数据分布。建议开启并行写入,以达到最佳性能。 |
说明
命令行选项详情请参见 OBDUMPER 命令行选项。