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) }