Skip to content

Instantly share code, notes, and snippets.

@belachkar
Created March 2, 2021 12:19
Show Gist options
  • Save belachkar/3861fa06936229e26ec6762d47a25e97 to your computer and use it in GitHub Desktop.
Save belachkar/3861fa06936229e26ec6762d47a25e97 to your computer and use it in GitHub Desktop.

Strapi Import CSV Data

For one-time import.

const _ = require('lodash');
const request = require('request');
const parse = require('csv-parse');
var strapi = require('strapi')();
var fs = require('fs');

// const remoteLink = "..."
const localFile = "./data.csv"

async function fetchData() {
  return new Promise( resolve => {
    data = []
    header = null;
    // source = request(remoteLink)
    source = fs.createReadStream(localFile)
    source.pipe(parse()).on('data', (row) => {
      if(!header) { header = row; return; }
      row = row.map(item=>item=='N/A' ? '' : item);
      data.push(_.zipObject(header, row))
    }).on('end', () => {
      resolve(data);
    });
  });
}

async function initStrapi() {
  await strapi.load();
  await strapi.runBootstrapFunctions();
  return strapi;
}

async function main() {
  var [strapi, data] = await Promise.all([initStrapi(),fetchData()])
  for(var i=0;i<data.length;i++) {
      await strapi.services.shop.create(data[i]);
  }
}

main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment