This repository was archived by the owner on Jul 18, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimport.js
More file actions
38 lines (33 loc) · 1.64 KB
/
Copy pathimport.js
File metadata and controls
38 lines (33 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
let fs = require("fs");
const MongoClient = require('mongodb').MongoClient;
/*
Import a CSV of users into the 'Users' collection of the database.
Usage - node import.js <db-connection, including db name> <path to csv> [roles comma separated]
eg. `node import.js "mongodb+srv://admin:PASSWORD@SERVER.net/DATABASE?retryWrites=true&w=majority" "data.csv" "tutor"`
*/
(async () => {
console.log(`loading data from ${__dirname + process.argv[3]} into database ${process.argv[2]}`);
let mongoClient = new MongoClient(process.argv[2], { useNewUrlParser: true, useUnifiedTopology: true });
await mongoClient.connect().catch(err => console.log(err));
let usersCollection = mongoClient.db().collection("Users");
console.log("connected to db")
let data = fs.readFileSync(__dirname + "/" + process.argv[3], 'utf8').replace("\r","").split("\n").slice(1).map(x=>x.split(","));
let users = []
for (let studentArr of data) {
let user = {
name: {
first: studentArr[0].split(" ")[0],
last: studentArr[0].split(" ").slice(1).join(" ")
},
email: studentArr[1],
roles: [...(process.argv[4] ? process.argv[4].split(",") : [])],
children: [],
graduation_year: studentArr[2].length == 2 ? "20" + studentArr[2] : studentArr[2].length == 4 ? studentArr[2] : null, //if XX, 20XX; if XXXX, XXXX; else null
}
users.push(user);
}
console.log(`created ${users.length} users`)
await usersCollection.insertMany(users);
console.log("SUCCESS!");
process.exit();
})().catch(err => console.log("ERROR LOADING DATA:",err))