DataX/ftpwriter/doc/ftpwriter.md
2024-09-06 09:43:48 +08:00

253 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DataX FtpWriter 说明
------------
## 1 快速介绍
FtpWriter提供了向远程FTP文件写入CSV格式的一个或者多个文件在底层实现上FtpWriter将DataX传输协议下的数据转换为csv格式并使用FTP相关的网络协议写出到远程FTP服务器。
**写入FTP文件内容存放的是一张逻辑意义上的二维表例如CSV格式的文本信息。**
## 2 功能与限制
FtpWriter实现了从DataX协议转为FTP文件功能FTP文件本身是无结构化数据存储FtpWriter如下几个方面约定:
1. 支持且仅支持写入文本类型(不支持BLOB如视频数据)的文件且要求文本中shema为一张二维表。
2. 支持类CSV格式文件自定义分隔符。
3. 写出时不支持文本压缩。
6. 支持多线程写入,每个线程写入不同子文件。
我们不能做到:
1. 单个文件并发写入。
## 3 功能说明
### 3.1 配置样例
```json
{
"setting": {},
"job": {
"setting": {
"speed": {
"channel": 2
}
},
"content": [
{
"reader": {},
"writer": {
"name": "ftpwriter",
"parameter": {
"protocol": "sftp",
"host": "***",
"port": 22,
"username": "xxx",
"password": "xxx",
"timeout": "60000",
"connectPattern": "PASV",
"path": "/tmp/data/",
"fileName": "yixiao",
"writeMode": "truncate|append|nonConflict",
"fieldDelimiter": ",",
"encoding": "UTF-8",
"nullFormat": "null",
"dateFormat": "yyyy-MM-dd",
"fileFormat": "csv",
"suffix": ".csv",
"header": []
}
}
}
]
}
}
```
### 3.2 参数说明
* **protocol**
* 描述ftp服务器协议目前支持传输协议有ftp和sftp。 <br />
* 必选:是 <br />
* 默认值:无 <br />
* **host**
* 描述ftp服务器地址。 <br />
* 必选:是 <br />
* 默认值:无 <br />
* **port**
* 描述ftp服务器端口。 <br />
* 必选:否 <br />
* 默认值若传输协议是sftp协议默认值是22若传输协议是标准ftp协议默认值是21 <br />
* **timeout**
* 描述连接ftp服务器连接超时时间单位毫秒。 <br />
* 必选:否 <br />
* 默认值600001分钟<br />
* **username**
* 描述ftp服务器访问用户名。 <br />
* 必选:是 <br />
* 默认值:无 <br />
* **password**
* 描述ftp服务器访问密码。 <br />
* 必选:是 <br />
* 默认值:无 <br />
* **path**
* 描述FTP文件系统的路径信息FtpWriter会写入Path目录下属多个文件。 <br />
* 必选:是 <br />
* 默认值:无 <br />
* **fileName**
* 描述FtpWriter写入的文件名该文件名会添加随机的后缀作为每个线程写入实际文件名。 <br />
* 必选:是 <br />
* 默认值:无 <br />
* **writeMode**
* 描述FtpWriter写入前数据清理处理模式 <br />
* truncate写入前清理目录下一fileName前缀的所有文件。
* append写入前不做任何处理DataX FtpWriter直接使用filename写入并保证文件名不冲突。
* nonConflict如果目录下有fileName前缀的文件直接报错。
* 必选:是 <br />
* 默认值:无 <br />
* **fieldDelimiter**
* 描述:读取的字段分隔符 <br />
* 必选:否 <br />
* 默认值:, <br />
* **compress**
* 描述:文本压缩类型,暂时不支持。 <br />
* 必选:否 <br />
* 默认值:无压缩 <br />
* **encoding**
* 描述:读取文件的编码配置。<br />
* 必选:否 <br />
* 默认值utf-8 <br />
* **nullFormat**
* 描述文本文件中无法使用标准字符串定义null(空指针)DataX提供nullFormat定义哪些字符串可以表示为null。<br />
例如如果用户配置: nullFormat="\N",那么如果源头数据是"\N"DataX视作null字段。
* 必选:否 <br />
* 默认值:\N <br />
* **dateFormat**
* 描述:日期类型的数据序列化到文件中时的格式,例如 "dateFormat": "yyyy-MM-dd"。<br />
* 必选:否 <br />
* 默认值:无 <br />
* **fileFormat**
* 描述文件写出的格式包括csv (http://zh.wikipedia.org/wiki/%E9%80%97%E5%8F%B7%E5%88%86%E9%9A%94%E5%80%BC) 和text两种csv是严格的csv格式如果待写数据包括列分隔符则会按照csv的转义语法转义转义符号为双引号"text格式是用列分隔符简单分割待写数据对于待写数据包括列分隔符情况下不做转义。<br />
* 必选:否 <br />
* 默认值text <br />
* **suffix**
* 描述:最后输出文件的后缀,当前支持 ".text"以及".csv"
* 必选:否 <br />
* 默认值:"" <br />
* **header**
* 描述txt写出时的表头示例['id', 'name', 'age']。<br />
* 必选:否 <br />
* 默认值:无 <br />
### 3.3 类型转换
FTP文件本身不提供数据类型该类型是DataX FtpWriter定义
| DataX 内部类型| FTP文件 数据类型 |
| -------- | ----- |
| Long |Long -> 字符串序列化表示|
| Double |Double -> 字符串序列化表示|
| String |String -> 字符串序列化表示|
| Boolean |Boolean -> 字符串序列化表示|
| Date |Date -> 字符串序列化表示|
其中:
* FTP文件 Long是指FTP文件文本中使用整形的字符串表示形式例如"19901219"。
* FTP文件 Double是指FTP文件文本中使用Double的字符串表示形式例如"3.1415"。
* FTP文件 Boolean是指FTP文件文本中使用Boolean的字符串表示形式例如"true"、"false"。不区分大小写。
* FTP文件 Date是指FTP文件文本中使用Date的字符串表示形式例如"2014-12-31"Date可以指定format格式。
## 4 性能报告
## 5 约束限制
## 6 FAQ