# Data Reader
DataReader 插件是专门提供用于开发和测试环境中,生产满足一定规则要求的数据的插件。
在实际开发和测试中,我们需要按照一定的业务规则来生产测试数据,而不仅仅是随机内容,比如身份证号码,银行账号,股票代码等。
## 为什么要重复发明轮子
诚然,网络上有相当多的专门的数据生产工具,其中不乏功能强大、性能也强悍。 但这些工具大部分是考虑到了数据生成这一段,而忽略了数据写入到目标端的问题,或者说有些考虑到了,但仅仅只考虑了一种或有限的几种数据库。
恰好 Addax 工具能够提供足够多的目标端写入能力,加上之前的已有的 [streamReader](../streamreader) 已经算是一个简单版的数据生成工具,因此在此功能上 增加一些特定规则,再利用写入端多样性的能力,自然就成为了一个较好的数据生成工具。
## 配置示例
这里我把目前插件支持的规则全部列举到下面的例子中
=== "datareader2stream.json"
`json
--8<-- "jobs/datareader.json"
`
保存上述内容到 job/datareader2stream.json
然后执行该任务,其输出结果类似如下:
`shell
--8<-- "output/datareader.txt"
`
## 配置说明
column 的配置和其他插件的配置稍有不同,一个字段由以下配置项组成
### rule 说明
该插件的字段配置核心是 rule 字段,它用来指示应该生成什么样的数据,并依据不同规则,配合其他配置选项来生产满足期望的数据。 当前 rule 的配置均为内置支持的规则,暂不支持自定义,以下详细说明
### constant
constant 是 rule 的默认配置,该规则意味着要生成的数据值由 value 配置项决定,其不做任何变更。比如
"value": "Addax", "type": "string", "rule": "constant"
}
表示该字段生产的数据值均为 Addax
### incr
incr 配置项的含义和 streamreader 插件中的 incr 含义一致,表示这是一个递增的数据生产规则,比如
"value": "1,2", "rule": "incr", "type": "long"
}
表示该字段的数据是一个长整形,数值从 1 开始,每次递增 2,也就是形成 1 开始,步长为 2 的递增数列。
该字段更详细的配置规则和注意事项,可以参考 [streamreader](../streamreader) 中的 incr 说明。
### random
random 配置项的含义和 [streamreader](../streamreader) 插件中的 random 含义一致,表示这是一个递增的数据生产规则,比如
"value": "1,10", "rule": "random", "type": "string"
}
表示该字段的数据是一个长度为 1 到 10 (1 和 10 都包括)随机字符串。
该字段更详细的配置规则和注意事项,可以参考 [streamreader](../streamreader) 中的 random 说明。
注意:上述表格中的规则返回的数据类型是固定的,且不支持修改,因此 type 无需配置,配置的类型也会被忽略,因为数据生成来自内部规则,所以 value 也无需配置,配置的内容也会被忽略。