CSV to SQL import using Node, Express and React

Published on
-
3 mins read
Authors
  • Name
    Twitter

CSV to SQL import

N|Solid

Github : Front-End Part               Back-End Part

What is this app all about ?

This app allows users to import a .csv file and save it in MySQL. The .csv file needs to be in a specified format, something like this . Once the data is saved we can see and delete the table data on the front-end.

Whats there on back-end and front-end ?

  • Back-End :
    • NodeJS
    • ExpressJS
    • MySQL
  • Front-End :
    • ReactJS

Here is the SQL table structure :

FieldType
idint(11)
level_colvarchar(255)
cvssvarchar(255)
titlevarchar(255)
vulnerabilityvarchar(255)
solutionvarchar(255)
reference_colvarchar(255)

Where is it deployed ?

Client side app ( React app ) is deployed on Netlify Server side app ( Node app ) is deployed on Heroku MySQL database is deployed on Remote Mysql

How to run it locally ?

To run it locally we need to clone two git repositories, one for the server and other for the client ( front-end).

To clone the client repo :

git clone https://github.com/krishankantray/csv-to-sql-import-client.git

To clone the server repo :

git clone https://github.com/krishankantray/csv-to-sql-import-server.git

The above git setup is for online server auto deployment on Heroku and Netlify . We need to make some changes in it to run it locally.

First we setup the server locally :
  • Open the directory : csv-to-sql-import-server , in any vscode or any other editor.
  • If you have a local MySql db then do replace the details in the app>>config>>db.config.js

If you don't have a local MySql db then leave it as it is.

Now, open terminal ( in the directory : csv-to-sql-import-server ):

npm install npm start It should print in terminal : Server is running on port 9000.

( Make sure there is nothing previously running on port 9000, if there is then change the >port from line 25 of server.js )

To test if all APIs are working, open postman and use following APIs

  • GET call for obtaining all the records, url should be :http://localhost:9000/customers/.

  • GET call for single records by id, for eg : http://localhost:9000/customers/963

  • POST call for bulk create records : http://localhost:9000/bulkcreate This call needs a body to be passed

  • POST call for single create records http://localhost:9000/customers This call needs a body to be passed

  • DELETE call for all records deletion http://localhost:9000/customers

  • DELETE call for records deletion http://localhost:9000/customers/963

  • PUT call to update a single record http://localhost:9000/customers/963

Now, we will configure the local front-end ( React app ) :

We only need to make some changes in App.js within src directory. Just change the line 35 , 69 and 97, i.e we need to change the URL of all the fetch calls from Apps.js.

For Example :

35 : Before https://csv-to-sql-import.herokuapp.com/bulkcreate 35 : After http:localhost:9000/bulkcreate

Similarly for line 69 and 97 , just replace this part of URL - https://csv-to-sql-import.herokuapp.com with http:localhost:9000

and rest of the part of url remains same.