1 Star 1 Fork 1

Crazy/虚拟数据生成

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mockutil.js 4.63 KB
一键复制 编辑 原始数据 按行查看 历史
Crazy 提交于 2022-06-03 14:15 . 提交
"use strict";
const mockUtil = require("mockjs");
const fs = require("fs");
const path = require("path");
const mysql = require('mysql');
const { JSON } = require("mysql/lib/protocol/constants/types");
function intomysql() {
const connection = mysql.createConnection({
host : '127.0.0.1',
user : 'root',
password : 'root',
port: '3306',
database: 'test'
});
connection.connect();
var sql = 'SHOW TABLES;';
//查
var tres=[]
connection.query(sql,function (err, result) {
if(err){
console.log('[SELECT ERROR] - ',err.message);
return;
}
for (let index = 0; index < result.length; index++) {
const element = result[index]['Tables_in_test'];
console.log('\x1B[32m',"已获取表:"+element);
var tableNamesql="SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = '"+element+"'";
connection.query(tableNamesql,function (err1, result1) {
var arr=[]
if(err1){
console.log('[SELECT ERROR] - ',err1.message);
return;
}
for (let index1 = 0; index1 < result1.length; index1++) {
const col = result1[index1]['COLUMN_NAME'];
arr.push("'"+col+"':'@ctitle'")
}
// console.log("{"+(arr).join(",")+"}");
fs.writeFile('./rules/'+element, "{"+(arr).join(",")+"}", (err, writeOfContent) => {
try {
} catch (e) {
console.log('写入内容失败', e)
}
})
})
}
connection.end();
});
}
function mockData(ruleFile) {
/**
* 处理生成PLSQL语句。
* 结果默认保存在datas目录下,结果名为 ruleFilename.sql
*/
let filename = path.win32.basename(ruleFile);
fs.exists(ruleFile, (exists) => {
if (exists) {
fs.readFile(ruleFile, 'utf8', (err, rule) => {
if (err) throw err;
let obj = eval("(" + rule + ")");
let results=generateMockDatas(100,filename,obj);
fs.writeFile("datas/" + filename + ".sql", results.join("\n"), "utf8", function(err) {
if (err) {
console.log(err);
}
});
});
} else {
console.log("could't found the file:" + ruleFile);
}
});
}
function mockDatas(ruleDirectory) {
/**
* 遍历文件夹下的所有文件,逐一处理生成PLSQL语句。
* 结果默认保存在datas目录下,结果名为 ruleFilename.sql
*/
fs.exists(ruleDirectory,(exists)=>{
if(exists){
fs.readdir(ruleDirectory,function(err,files){
files.forEach(function(file) {
mockData(ruleDirectory+"/"+file);
}, this);
});
}else{
console.log("the directory "+ruleDirectory+ " is not exists");
}
});
}
function printMockData(ruleFile) {
/**
* 处理生成PLSQL语句,结果输出到控制台。
*/
let filename = path.win32.basename(ruleFile);
fs.exists(ruleFile, (exists) => {
if (exists) {
fs.readFile(ruleFile, 'utf8', (err, rule) => {
if (err) throw err;
let obj = eval("(" + rule + ")");
let results=generateMockDatas(5,filename,obj);
console.log(results);
});
} else {
console.log("could't found the file:" + ruleFile);
}
});
}
function generateMockDatas(count, tableName, template) {
let result=[];
//处理规则
let Random = mockUtil.Random;
Random.guid();
Random.ctitle();
let i = 0;
while (i < count) {
let mockResult = mockUtil.mock(template);
let sql = ["insert into "];
sql.push(tableName);
let fields = [];
let values = [];
for (let e in mockResult) {
fields.push(e);
if (mockResult[e].constructor == Number) {
values.push(mockResult[e]);
} else {
values.push("'" + mockResult[e] + "'");
}
}
sql.push("(");
sql.push(fields.join(','));
sql.push(") values(");
sql.push(values.join(','));
sql.push(");");
result.push(sql.join(''));
i++;
}
return result;
}
exports.printMockData = printMockData;
exports.mockData = mockData;
exports.mockDatas = mockDatas;
exports.intomysql = intomysql;
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
NodeJS
1
https://gitee.com/fzziboke/virtual-data-generation.git
git@gitee.com:fzziboke/virtual-data-generation.git
fzziboke
virtual-data-generation
虚拟数据生成
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385