0% found this document useful (0 votes)
98 views14 pages

Spring Boot CSV to MySQL Guide

Uploaded by

Vin Diesel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
98 views14 pages

Spring Boot CSV to MySQL Guide

Uploaded by

Vin Diesel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Spring Boot- Read CSV Data or How to read or upload data from CSV file

into MySQL database.

Business Requirement-
Suppose you have one csv file which contain employee data and want to upload
that file data into database, in that case you should go with spring boot with
read CSV data.

Table Structure

Employee Table

Id(PK)

Name

City

Problem Statement
Design the REST API or Restful web service to fetch the data from CSV file and
store it into MySQL database.

Steps-

Create the spring boot project.

Add Maven dependencies into [Link] file


Create Model class

Create Service

Create Service Implementation

Create Repository
Create Rest Controller

Create CommonUtil

Create ResponseMessage

[Link] file

Run Spring Boot Application

Open Postman (Request and Response)

Go to Database and Check details

Application Flow

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 1


Project Structure

Step-1- Create Spring boot maven project

File-> New-> Spring Starter Project-> Enter the name and Artifact then

Click on Next button-> Next button-> click on finish button

Step-2- Add maven dependency into [Link] file

<parent>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.5</version>

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 2


<relativePath />
</parent>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-properties-
migrator</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>[Link]-api</artifactId>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>hibernate-core</artifactId>
<version>[Link]</version>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 3


<optional>true</optional>
</dependency>

<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>

<dependency>
<groupId>[Link]</groupId>
<artifactId>commons-csv</artifactId>
<version>1.8</version>
</dependency>

Step-3- Create Model Classes

[Link]

package [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

@Entity

@Table(name = "employee")

public class Employee {

// id, name, city

@Id
SPRING BOOT- READ CSV DATA BY JEEVAN SIR 4
@GeneratedValue(strategy = [Link])

private int id;

private String name;

private String city;

public Employee() {

public Employee(int id, String name, String city) {

super();
[Link] = id;

[Link] = name;

[Link] = city;

public int getId() {

return id;

public void setId(int id) {

[Link] = id;

public String getName() {

return name;

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 5


public void setName(String name) {

[Link] = name;

public String getCity() {

return city;

public void setCity(String city) {

[Link] = city;

@Override

public String toString() {

return "Employee [id=" + id + ", name=" + name + ", city=" + city


+ "]";

Step-4- Create Service

[Link]
package [Link];
import [Link];

public interface EmployeeService {

public void save(MultipartFile file);


}

Step-5-Service Implementation

[Link]
SPRING BOOT- READ CSV DATA BY JEEVAN SIR 6
package [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

@Service

public class EmployeeServiceImpl implements EmployeeService {

@Autowired

private EmployeeRepository employeeRepository;

@Override
public void save(MultipartFile file) {

try {

List<Employee> employees =
[Link]([Link]());

[Link](employees);

} catch (IOException e) {
throw new RuntimeException("fail to store csv data: " +
[Link]());

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 7


}

Step-6-Create Repository

[Link]

package [Link];

import [Link];

import [Link];

import [Link];

@Repository
public interface EmployeeRepository extends
JpaRepository<Employee,Integer>{

Step-7- Create Rest Controller


[Link]

package [Link];

import [Link];
import [Link];

import [Link];

import [Link];

import [Link];
import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 8


@RestController

public class EmployeeController {

@Autowired

private EmployeeService employeeService;

@PostMapping("/upload")

public ResponseEntity<ResponseMessage>
uploadFile(@RequestParam("file") MultipartFile file) {

String message = "";

if ([Link](file)) {

try {

[Link](file);

message = "Uploaded the file successfully: " +


[Link]();

return
[Link]([Link]).body(new ResponseMessage(message));

} catch (Exception e) {
message = "Could not upload the file: " +
[Link]() + "!";
return
[Link](HttpStatus.EXPECTATION_FAILED).body(new
ResponseMessage(message));

message = "Please upload a csv file!";


return [Link](HttpStatus.BAD_REQUEST).body(new
ResponseMessage(message));
}

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 9


}

Step-8- Create CommonUtil

[Link]

package [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

import [Link];

public class CommonUtil {

public static String TYPE = "text/csv";

static String[] HEADERs = { "id", "name", "city" };

public static boolean hasCSVFormat(MultipartFile file) {

if (![Link]([Link]())) {

return false;

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 10


}

return true;

public static List<Employee> csvToEmployees(InputStream is) {


try (BufferedReader fileReader = new BufferedReader(new
InputStreamReader(is, "UTF-8"));

CSVParser csvParser = new CSVParser(fileReader,

[Link]().withIgnoreHeaderCase().
withTrim());) {

List<Employee> employees = new ArrayList<Employee>();

Iterable<CSVRecord> csvRecords = [Link]();

for (CSVRecord csvRecord : csvRecords) {


Employee emp = new
Employee([Link]([Link]("id")), [Link]("name"),

[Link]("city"));

[Link](emp);
}

return employees;

} catch (IOException e) {
throw new RuntimeException("fail to parse CSV file: " +
[Link]());

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 11


}

Step-9- Create ResponseMessage

[Link]

package [Link];

public class ResponseMessage {

private String message;

public ResponseMessage(String message) {


[Link] = message;
}

public String getMessage() {


return message;
}

public void setMessage(String message) {


[Link] = message;
}
}

Step-10- [Link] file

#MysqL
[Link]=8181
[Link]-class-
name=[Link]
[Link]=jdbc:mysql://localhost:3306/test?aut
oReconnect=true&useSSL=false

[Link]=root
[Link]=root
[Link]-auto=update
[Link]-sql=true
[Link]=[Link]
ect.MySQL8Dialect

#we can mention maximum excel file size here


[Link]-file-size=10 MB

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 12


Step-11- Run Spring Boot Application

Right click on SpringBootApplication-> Run as-> Spring Boot Application.

Step-12-Open Postman (Request and Response)

Request

Select method as Post


Enter the URL as [Link]
Select Body->form-data- write file as key and upload file as value
Click on Send button

Response

Step-11- Go to Database and Check details

Employee table

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 13


Step-12- Application Flow

Postman Request ([Link] ->


Model Class->RestController->Service->Service Implementation->Repository-
>Database

SPRING BOOT- READ CSV DATA BY JEEVAN SIR 14

You might also like