fake-mysql
generate test data for mysql
Install
npm install fake-mysql -g
Use
fakemysql ./config.js
output
Records: 10 Duplicates: 0 Warnings: 10Records: 20 Duplicates: 0 Warnings: 0ok 56ms
Test
见 /test/config.js
config
config基础参数
moduleexports = host: 'localhost' //数据库 host user: 'root' //数据库 账号 password: 'root' //数据库 密码 port: '3306' //数据库 端口 database: 'school' //数据库 database mode: 'dev' // 模式 详细见下面 local: 'zh_CN' // 数据本地化 详细见下面 tables: //表数据结构 详细见下面 name: 'stu' length: 10 data: phone: 'attach.phone' email: 'attach.email' ip: 'internet.ip' school: 'attach.school' address: 'address.city' create_time: 'attach.datetime'
config.mode
说明 | 可选值 | 默认值 |
运行模式 | pord | dev | pord |
- pord: 运行的数据会存入数据库
- dev: 运行的数据打印在控制台
config.local
说明 | 可选值 | 默认值 |
数据本地化,会影响参数的输出格式 | 见下 | zh_CN |
- az
- cz
- de
- de_AT
- de_CH
- en
- en_AU
- en_BORK
- en_CA
- en_GB
- en_IE
- ...
展开查看更多
* en_IND
* en_US
* en_ZA
* en_au_ocker
* es
* es_MX
* fa
* fr
* fr_CA
* ge
* id_ID
* it
* ja
* ko
* nb_NO
* nep
* nl
* pl
* pt_BR
* pt_PT
* ru
* sk
* sv
* tr
* uk
* vi
* zh_CN
* zh_TW
config.mode
说明 | 可选值 | 默认值 |
运行模式 | pord | dev | pord |
- pord: 运行的数据会存入数据库
- dev: 运行的数据打印在控制台
config.tables
说明 | 可选值 | 默认值 |
生成数据规则 | / | / |
moduleexports = ... tables: // 可以包含多个表名 name: 'stu' // 对应数据库表名 length: 10 // 生成的数据长度 data: // 数据类型定义,详细类型见下面,这里的要对应数据库表里面的字段 phone: 'attach.phone' email: 'attach.email' ip: 'internet.ip' school: 'attach.school' address: 'address.city' create_time: 'attach.datetime' class_num: // 参数拓展,详细见下面 type: 'attach.integer' min: 50 max: 80 name: 'stu2' ... ... ...
数据类型
数据类型对应数据库里面的填充字段,例如直接使用
moduleexports = ... tables: name: 'xxxx' length: 20 data: age: 'attach.name' ...
你也可以在此基础上参数拓展
moduleexports = ... tables: name: 'xxxx' length: 20 data: age: type: 'attach.name' ...
每个字段支持的自定义拓展参数不一样,但是每个参数都有通用的参数拓展,下面是通用拓展属性
moduleexports = ... tables: name: 'xxxx' length: 20 data: age: type: 'attach.name' // 类型 maxLength: 20 // 最长限制 required: true // 是否必须返回,默认为true,为false时此字段有50%的几率为空 { // 自定义过滤器,你可以在参数返回对该参数处理,通过过滤器,你可以实现更多高级用法 return target + '你好' } ...
填充字段
attach
attach
是官方提供类型,类型经过处理,但多数不支持本地化,大多只支持中文
-
school
随机学校名称 -
integer
范围内的随机整数数字参数拓展xxxx:type: 'attach.integer'min: 50 // 最小值max: 80 // 最大值 -
floating
范围内的随机浮点数字参数拓展xxxx:type: 'attach.floating'min: 50 // 最小值max: 80 // 最大值fixed: 3 // 保留小数点 -
string
范围内的随机字符串参数拓展xxxx:type: 'attach.string'min: 50 // 最小长度max: 80 // 最大长度 -
age
范围内的随机年龄参数拓展xxxx:type: 'attach.string'min: 50 // 最小年龄max: 80 // 最大年龄 -
phone
随机11位手机号 -
qq
随机qq -
name
随机人名 -
openid
随机openid -
unionid
随机unionid -
datetime
随机datetime,格式YYYY-MM-DD HH:mm:ss
-
date
随机datetime,格式YYYY-MM-DD
-
time
随机time,格式HH:mm:ss
-
year
随机year,格式YYYY
-
timestamp
随机timestamp,格式yyyymmddhhmmss
-
avatar
随机头像,格式网址
-
qrcode
随机二维码,格式网址
-
music
随机音乐,格式网址
faker
来自依赖库 faker.js
提供的字段,支持本地化,请根据自己需要使用,如果使用的时候有问题,请提 issue
使用示例
moduleexports = ... tables: name: 'xxxx' length: 20 data: age: 'address.zipCode' ...
你也可以在此基础上参数拓展,支持默认的拓展参数
moduleexports = ... tables: name: 'xxxx' length: 20 data: zipCode: type: 'address.zipCode' { return target + ';' } ...
全部api列表
- address
- zipCode
- city
- cityPrefix
- citySuffix
- streetName
- streetAddress
- streetSuffix
- streetPrefix
- secondaryAddress
- county
- country
- countryCode
- state
- stateAbbr
- latitude
- longitude
- commerce
- color
- department
- productName
- price
- productAdjective
- productMaterial
- product
- company
- suffixes
- companyName
- companySuffix
- catchPhrase
- bs
- catchPhraseAdjective
- catchPhraseDescriptor
- catchPhraseNoun
- bsAdjective
- bsBuzz
- bsNoun
- database
- column
- type
- collation
- engine
- date
- past
- future
- between
- recent
- month
- weekday
- fake
- finance
- account
- accountName
- mask
- amount
- transactionType
- currencyCode
- currencyName
- currencySymbol
- bitcoinAddress
- iban
- bic
- hacker
- abbreviation
- adjective
- noun
- verb
- ingverb
- phrase
- helpers
- randomize
- slugify
- replaceSymbolWithNumber
- replaceSymbols
- shuffle
- mustache
- createCard
- contextualCard
- userCard
- createTransaction
- image
- image
- avatar
- imageUrl
- abstract
- animals
- business
- cats
- city
- food
- nightlife
- fashion
- people
- nature
- sports
- technics
- transport
- dataUri
- internet
- avatar
- exampleEmail
- userName
- protocol
- url
- domainName
- domainSuffix
- domainWord
- ip
- ipv6
- userAgent
- color
- mac
- password
- lorem
- word
- words
- sentence
- slug
- sentences
- paragraph
- paragraphs
- text
- lines
- name
- firstName
- lastName
- findName
- jobTitle
- prefix
- suffix
- title
- jobDescriptor
- jobArea
- jobType
- phone
- phoneNumber
- phoneNumberFormat
- phoneFormats
- random
- number
- arrayElement
- objectElement
- uuid
- boolean
- word
- words
- image
- locale
- alphaNumeric
- system
- fileName
- commonFileName
- mimeType
- commonFileType
- commonFileExt
- fileType
- fileExt
- directoryPath
- filePath
- semver
过滤器
通过过滤器,你可以实现更多用法
例1.自定义输出字段
// 自定义输出时间戳...my_time: type: 'custom.my_time' { return }...
例2.自定义引入模块参与处理
const dayjs = // 自定义输出日期...my_year: type: 'custom.my_year' { return }...