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.
64 lines
1.9 KiB
64 lines
1.9 KiB
try {
|
|
const { Pool, Client } = require('pg')
|
|
const XLSX = require('xlsx')
|
|
const path = require('path')
|
|
const fs = require("fs");
|
|
|
|
// 测试环境
|
|
const pool = new Pool({
|
|
user: 'postgres',
|
|
host: '10.8.30.32',
|
|
database: 'highways4good',
|
|
password: '123',
|
|
port: 5432,
|
|
})
|
|
|
|
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(`开始`);
|
|
|
|
let allVillageRes = (await client.query(`SELECT * FROM village`)).rows
|
|
// console.log(allVillageRes);
|
|
|
|
// 读取数据文件
|
|
let workbook = XLSX.readFile(path.join(__dirname, './data/村.xlsx'));
|
|
let firstSheetName = workbook.SheetNames[0];
|
|
let worksheet = workbook.Sheets[firstSheetName];
|
|
let res = XLSX.utils.sheet_to_json(worksheet, {
|
|
defval: ''
|
|
});
|
|
|
|
let insertSql = ''
|
|
|
|
for (let r of res) {
|
|
console.log(r);
|
|
if (r.v_n) {
|
|
let village = allVillageRes.find(v => v.name === r.v_n)
|
|
if (!village) {
|
|
insertSql += `INSERT INTO village (name,township_code) VALUES ('${r.v_n}',${r.t_c});\n`
|
|
}
|
|
}
|
|
}
|
|
|
|
fs.writeFileSync('village.sql', insertSql, 'utf-8');
|
|
|
|
// 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)
|
|
}
|
|
|