42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
|
import pg from "pg";
|
||
|
import fs from "fs";
|
||
|
import readline from 'readline';
|
||
|
|
||
|
const { Client } = pg;
|
||
|
|
||
|
|
||
|
const getClient = async () => {
|
||
|
const client = new Client({
|
||
|
user: process.env.POSTGRES_USER,
|
||
|
password: process.env.POSTGRES_PASSWORD,
|
||
|
host: process.env.POSTGRES_HOST,
|
||
|
port: process.env.POSTGRES_PORT,
|
||
|
database: process.env.POSTGRES_DB
|
||
|
});
|
||
|
await client.connect();
|
||
|
|
||
|
await client.query(fs.readFileSync('./scheme.psql').toString());
|
||
|
|
||
|
return client;
|
||
|
};
|
||
|
|
||
|
const db = await getClient();
|
||
|
|
||
|
const file = fs.readFileSync("./output.csv").toString();
|
||
|
|
||
|
const inFileStream = fs.createReadStream("./output.csv");
|
||
|
|
||
|
const rl = readline.createInterface({
|
||
|
input: inFileStream,
|
||
|
output: null,
|
||
|
crlfDelay: Infinity
|
||
|
})
|
||
|
|
||
|
rl.on('line', async (line) => {
|
||
|
let splitted = line.split(",")
|
||
|
await db.query(`INSERT INTO cities (name, lat, lng, country) VALUES ($1, $2, $3, $4);`, [splitted[0], splitted[1], splitted[2], splitted[3]])
|
||
|
});
|
||
|
|
||
|
rl.on('close', () => {
|
||
|
console.log("done");
|
||
|
})
|