You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
4.1 KiB
124 lines
4.1 KiB
try {
|
|
const { Pool, Client } = require('pg')
|
|
const XLSX = require('xlsx')
|
|
const path = require('path')
|
|
const fs = require("fs");
|
|
|
|
// 测试环境
|
|
const pool = new Pool({
|
|
user: 'highwayadmin',
|
|
host: '10.8.40.223',
|
|
database: 'highway4good',
|
|
password: 'highway123',
|
|
port: 5432,
|
|
})
|
|
const userId = 21
|
|
|
|
// 商用环境
|
|
// const pool = new Pool({
|
|
// user: 'highwayadmin',
|
|
// host: '10.8.40.223',
|
|
// database: 'highway4good',
|
|
// password: 'highway123',
|
|
// port: 5432,
|
|
// })
|
|
// const userId = ''
|
|
|
|
// 生成随机的时间字符串
|
|
function generateRandomTimeString () {
|
|
// 生成一个在指定时间范围内的随机日期对象
|
|
var startDate = new Date('2023-01-01');
|
|
var endDate = new Date('2023-07-31');
|
|
var randomDate = new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));
|
|
|
|
// 从日期对象中提取年、月和日
|
|
var year = randomDate.getFullYear();
|
|
var month = String(randomDate.getMonth() + 1).padStart(2, '0');
|
|
var day = String(randomDate.getDate()).padStart(2, '0');
|
|
|
|
// 生成一个在指定时间范围内的随机小时数和分钟数
|
|
var hours = String(Math.floor(Math.random() * 10) + 8).padStart(2, '0');
|
|
var minutes = String(Math.floor(Math.random() * 60)).padStart(2, '0');
|
|
|
|
// 组合成时间字符串
|
|
var timeString = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':00';
|
|
|
|
return timeString;
|
|
}
|
|
|
|
const fun = async () => {
|
|
// note: we don't try/catch this because if connecting throws an exception
|
|
// we don't need to dispose of the client (it will be undefined)
|
|
const client = await pool.connect()
|
|
try {
|
|
await client.query('BEGIN')
|
|
console.log(`开始`);
|
|
console.warn('user_id 配置了吗?');
|
|
|
|
await new Promise(resolve => setTimeout(() => {
|
|
console.warn('user_id 配置的对吗?');
|
|
resolve()
|
|
}, 3000));
|
|
await new Promise(resolve => setTimeout(() => {
|
|
console.warn('user_id 配置的真的对吗?');
|
|
resolve()
|
|
}, 3000));
|
|
|
|
await new Promise(resolve => setTimeout(() => {
|
|
console.warn('开始喽');
|
|
resolve()
|
|
}, 1000));
|
|
|
|
await new Promise(resolve => setTimeout(() => {
|
|
console.warn('3');
|
|
resolve()
|
|
}, 1000));
|
|
await new Promise(resolve => setTimeout(() => {
|
|
console.warn('2');
|
|
resolve()
|
|
}, 1000));
|
|
await new Promise(resolve => setTimeout(() => {
|
|
console.warn('1');
|
|
resolve()
|
|
}, 1000));
|
|
await new Promise(resolve => setTimeout(() => {
|
|
console.warn('开始!');
|
|
resolve()
|
|
}, 1000));
|
|
|
|
|
|
// 读取数据文件
|
|
let workbook = XLSX.readFile(path.join(__dirname, './data/work.xlsx'));
|
|
let firstSheetName = workbook.SheetNames[0];
|
|
let worksheet = workbook.Sheets[firstSheetName];
|
|
let res = XLSX.utils.sheet_to_json(worksheet, {
|
|
defval: ''
|
|
});
|
|
|
|
for (let r of res) {
|
|
console.log(r);
|
|
|
|
let time = generateRandomTimeString()
|
|
console.log(time);
|
|
await client.query(
|
|
`INSERT INTO report (report_type, project_type, road, time,content,user_id) VALUES($1, $2, $3, $4, $5, $6) `,
|
|
['conserve', 'road', r['养护道路'], time, r['养护内容'], userId])
|
|
// break
|
|
}
|
|
|
|
// await client.query('ROLLBACK')
|
|
await client.query('COMMIT')
|
|
console.log('执行完毕~')
|
|
} catch (e) {
|
|
await client.query('ROLLBACK')
|
|
console.log('执行错误~')
|
|
throw e
|
|
} finally {
|
|
client.release();
|
|
}
|
|
}
|
|
|
|
fun()
|
|
} catch (error) {
|
|
console.error(error)
|
|
}
|
|
|