首先需要下载python,我这里给一个下载地址:
Python Mirror 下载之后安装就可以使用,下边是一个github的使用方法
doc/zh_CN/使用举例.md · 臭屁小米豆他爹/datafaker - Gitee.com
然后安装datafaker,打开cmd命令行,然后输入,下载datafaker
pip install datafaker
安装成功之后就可以关闭命令行
我们下载好的datafaker在Python的Scripts目录下,可以看到里边有一个bank_table_head.txt文件,这是自己新建的,用来批量构建数据
这个txt文件的写法如下:具体数据构造规则太多了给个链接,有兴趣可以自己看
doc/zh_CN/数据构造规则.md · 臭屁小米豆他爹/datafaker - Gitee.com
id||int||自增id[:inc(id,1)] name||varchar(20)||学生名字 school||varchar(20)||学校名字[:enum(file://names.txt)] nickname||varchar(20)||学生小名[:enum(鬼泣, 高小王子, 歌神, 逗比)] age||int||学生年龄[:age] class_num||int||班级人数[:int(10, 100)] score||decimal(4,2)||成绩[:decimal(4,2,1)] phone||bigint||电话号码[:phone_number] email||varchar(64)||家庭网络邮箱[:email] ip||varchar(32)||IP地址[:ipv4] address||text||家庭地址[:address]
id||int||自增id[:inc(id,10389)]
file_id||int||文件id[:int(70000, 100000)]
table_head_info||varchar(55)||表头信息[:enum(鬼泣, 高小王子, 歌神, 逗比)]
然后就在这个txt文件所在地直接cmd命令,不然找不到这个txt文件,然后输入
$ datafaker rdb mysql+mysqldb://root:root@localhost:3600/test?charset=utf8 stu 10 --outprint --meta meta.txt --outspliter musqldb:后边的是/账号/密码/端口号/库名?编码格式/表名 数据量 参数的使用自己看 选择模板 参数
datafaker参数包含4个必选参数和一些可选参数,如下表所示
参数名 | 含义 | 参数类型 | 是否必选 | 默认值 | 备注 |
---|---|---|---|---|---|
dbtype | 数据源类型 | string | 是 | 无 | 可选值为 rdb,mysql,hive, kafka, hbase, es, file |
connect | 数据源连接信息 | string | 是 | 无 | 关系型数据库和hive为 sqlachemy的连接串 kafka为broker连接串 file为文件路径 hbase为thrift host和端口 |
table | 表名 | string | 是 | 无 | 将各种数据源操作单位都抽象为表,数据库中为表,kafka中为topic,file为文件名,hbase为表,es为索引和type,mongo为集合 |
num | 数据条数 | int | 是 | 无 | 其中kafka必须为1 |
auth | 账号密码 | string | 否 | 无 | 数据源的账号密码,以:分隔,例如 admin:12334 |
meta | 元数据文件 | string | 否 | 无 | 若设定该参数,则忽略从数据源连接信息中读取远数据 |
metaj | 元数据文件 | string | 否 | 无 | 自定义数据结构(一般用于json嵌套),metaj优先于meta参数 |
interval | 流数据产生间隔 | float | 否 | 1 | 单位秒 |
version | 显示版本号 | bool | 否 | 无 | |
outprint | 是否在屏幕打印 | bool | 否 | false | 若设置屏幕打印,则数据不会写文件或数据源 |
outspliter | 数据字段分割符 | string | 否 | , | 屏幕打印,保存文件有效 |
locale | 语言类型 | string | 否 | zh_CN | 支持多国语言,en_US, zh_CN |
format | 数据格式 | string | 否 | text | kafka 默认为json |
withheader | 打印和存储到文件是否带表头 | bool | 否 | False | |
batch | 每次批量写入数据源大小 | int | 否 | 1000 | |
workers | 生成测试数据的线程数 | int | 否 | 4 |
这是我写的一个例子:可以实现8个线程每次2000批量插入50000条数据,打印需要时间
datafaker rdb mysql+mysqldb://账号密码端口号/库名?charset=utf8 bank_table_head 50000 --meta bank_table_head.txt --worker 8 --batch 2000
可能会出现一些问题,在网上百度解决一下,或者多试几次