文件 schema 结构说明
CloudCanal 支持文件类型数据源,添加该类型数据源时可定义内容的解析格式,本文主要介绍该格式定义,方便用户集成数据。
文件数据集成机制
CloudCanal 当前支持 SshFile、OssFile、S3File 3种文件类型数据源,分别对应通过 ssh 远程(或本地)访问 POSIX 文件系统、阿里云 OSS、以及 AWS S3。
添加上述 3 种数据源时,可以设定额外参数,说明如下:
| 参数名称 | 参数用途 |
|---|---|
| dbsJson | 定义文件解析 schema(往下有详细章节说明) |
| defaultLineSchemaJson | 如果未在 dbsJson 中找 到文件的解析 schema, 则默认使用本参数配置(往下有详细章节说明),即获取一行中的第一列(如文本文件通过 colSep 无切割则整行数据为一列) |
| fileSuffixArray | 文件类型过滤,可多个文件,以逗号分割。如果为空,则获取所有文件(非目录)。EMPTY 为特殊后缀,即没获取到任何后缀的文件,默认当作文本文件处理 |
| withMetaFields | 是否带上文本所在的文件元信息。为 true 时,默认带上 __cc_src_file varchar(512) DEFAULT NULL,__cc_src_url varchar(512) DEFAULT NULL |
当通过上述 3 种方式访问对应文件时,CloudCanal 根据不同文件类型做切分,再从 dbsJson 参数内容中寻找对应文件 schema 进行数据处理(选择列和类型转换)。
CloudCanal 通过文件后缀对文件类型进行判定,当前支持如下:
- Text (EMPTY , .log , .sql , .txt , .java , .js , .cpp , .c)
- Markdown (.md)
- Json (.json)
- Excel (.xls , .xlsx)
- CSV (.csv)
信息
Markdown 和 Json 当前也按照 Text 方式进行处理(按行读取),Excel 和 CSV 则进行标准格式解析,其中 CSV 可以通过任务参数 skipRows 忽略表头。