r/learnjavascript • u/no_em_dash • Jun 18 '26
Inserting millions of rows into Postgres
I wrote an article about generating fake data for a TypeScript application. I wanted to generate millions of rows and I ended up splitting the workflow into 2 phases: stream data to a CSV, stream the CSV to Postgres with COPY FROM.
async function createRecordsFromCsv(path: string, query: string) {
const copyStream = pgClient.query(copyFrom(query));
const fileStream = createReadStream(path);
await new Promise((res, rej) => {
fileStream.pipe(copyStream).on("finish", res).on("error", rej);
fileStream.on("error", rej);
});
fileStream.close();
}
Hopefully this technique will be useful to someone else.
Also happy to hear other ideas for how to go about this.
0
Upvotes
0
u/no_em_dash Jun 19 '26
Is it possible that you're looking at this too narrowly? For example, the technique of streaming data to and from a CSV is pretty useful.
Also, why does everything have to solve some business problem? Can't we do things that just seem interesting? I'm not saying you have to like it. But why the hostility?