1.2 插入数据
1.2.1 使用Mock模拟数据
import Mock from 'mockjs'
import './mock.js'
/**
* 生成一个请求 对象
*/
function getRequestData() {
//生成一个临时模拟数据
return Mock.mock({
id: '@id',
enabled: '@boolean',
acct_active: '@boolean',
pwd_valid: '@boolean',
acct_locked: '@boolean',
username: Mock.Random.first() + Mock.Random.last() + Mock.Random.integer(100, 999),
password: generateMockPassword(),
nickname: '@last',
avatar() {
//用户头像
return Mock.Random.image('100×100', Mock.Random.color(), '#757575', 'png', this.nickname)
},
phone: /^1[34578]\d{9}$/,
email: '@email()',
name: '@cname()',
gender() {
const genders = ['男', '女'];
return Mock.Random.pick(genders);
},
description: Mock.Random.cparagraph(),
modified_by: '@id',
gmt_create: '@date(yyyy-MM-dd)',
gmt_modified: '@date(yyyy-MM-dd)'
})
}
//生成密码
export function generateMockPassword(length = 8) {
const random = Mock.Random;
const lowerCase = 'abcdefghijklmnopqrstuvwxyz';
const upperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const numbers = '0123456789';
const specialChars = '!@#$%^&*()_+-=[]{}|;:,.<>?';
// 结合所有字符集
const allChars = lowerCase + upperCase + numbers + specialChars;
// 随机选择字符
let password = '';
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * allChars.length);
password += allChars[randomIndex];
}
return password;
}
1.2.2 插入数据库
import Pool from 'pg-pool'// 创建一个客户端实例\
import './index.js'
import {getRequestData} from "./index.js";
/**
* 连接 参数
* @type {{database: string, password: string, port: number, host: string, user: string}}
*/
const config = {
user: 'postgres',
host: 'localhost',
database: 'postgres',
password: '123456',
port: 5432
};
const pool = new Pool(config);
(async function runSqlScript() {
try {
// 1. 连接数据库
const client = await pool.connect();
for (let i = 0; i < 100; i++) {
// 2. 生成sql
let sql = insertSql();
// 3. 补全参数
let param = getExeParam();
// 4. 执行SQL
await client.query(sql, param);
}
}
// 5. 异常 处理
catch (error) {
console.error('Error', error);
}
// 6. 释放连接
finally {
await pool.end();
}
})()
/**
* 插入 sql
* @returns {string}
*/
function insertSql() {
return `INSERT INTO public.yhs_user3(id, enabled, acct_active, pwd_valid, acct_locked, username, password,
nickname, avatar, phone, email, name, gender, age, description, modified_by, gmt_create, gmt_modified)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18);`
}
/**
* 获取 执行 参数 需将对象转为 有序 数组
* @returns {(*|string|boolean|boolean)[]}
*/
function getExeParam() {
let obj = getRequestData()
return [
parseInt(obj.id),
obj.enabled,
obj.acct_active,
obj.pwd_valid,
obj.acct_locked,
obj.username,
obj.password,
obj.nickname,
obj.avatar,
obj.phone,
obj.email,
obj.name,
obj.gender,
obj.age,
obj.description,
parseInt(obj.modified_by),
obj.gmt_create,
obj.gmt_modified
]
}
1.2.2 结果