데이터를 h2 데이터베이스에 저장하는 방법은 쉽지 않았다.
insert into excel (id, address, place) values (1, '가평소방서', '경기도 가평군 가평읍 대곡리 213-5');
→ insert into 테이블명(컬럼명)values(데이터 내용);
위와같이 입력하면 데이터가 저장되긴 하지만 한개씩 써야한다는 단점이 있다.
엑셀 내용이 거의 500셀이 넘어가서 이렇게 하기에는 무리라는 판단이 들었다.
은인 박 님의 도움으로 엑셀 데이터를 올리는 방법을 알게되었다 Thank you!!! 😉'
박 님의 친절한 설명은 여기에~!
https://newdvlp.tistory.com/15#comment14368043
h2에서 csv 열기
코드를 쓰기 전에 먼저 엑셀에서 파일 > 내보내기 > (쉼표구분) csv > csv가 만들어졌다면 ※엑셀에서 인코딩을 변경 할 수있다면 하고 내보내면 된다 csv를 열어서 다른이름으로 저장한다. 이때 인
newdvlp.tistory.com
그러나 문제가 생겼다...!
이미 지정되어있는 예약어를 컬럼명이나 테이블명으로 사용하고 싶을때 설정하면 오류 없이 사용가능한 코드를 application properties에 적어둔 것이 문제가 되었다
아래가 바로 그 코드
편의상 대문자 테이블과 소문자 테이블이라고 하자면
대문자 테이블일 경우에는 위의 박 님의 블로그와 같이 새로 테이블을 생성하면서 내용도 동시에 넣는 코드 동작이 가능하다.
그러나 소문자 테이블일 경우에는 약간의 작업이 더 필요했다.
1. Entity 생성
spring boot 에서 테이블명과 칼럼명을 제대로 적은 entity를 만들어준다.
그럼 아래와 같이 칼럼명만 저장된 빈 테이블이 만들어진다
2. Excel 데이터 저장
이때가 정말 주의해야하는 부분이다
위 코드를 보면 id를 제외한 나머지 컬럼명이 a-z 알파벳 순서로 구성되어있다.
왜인지는 모르겠으나 h2의 특성이지 않을까 싶다.
그래서 엑셀 데이터도 위의 컬럼명 순서와 동일하게 저장해주어야한다.
처음에는 이를 몰라서 위도 컬럼 위치에 다른 데이터가 들어가 있는 등 복잡한 일들이 있었다.
꼭 컬럼명 순서에 주의해야한다.
이후에는 엑셀 데이터를 csv 파일로 변환하고, 메모장으로 열어 utf-8 형식으로 변환한 뒤에
코드만 작성해주면 된다.
insert into "excel" select *from csvread('C:/Users/user/coffee.csv',null,'utf-8')
→ insert into [테이블명] select *from csvread([경로],null,'utf-8')
이때 소문자 테이블이라면 테이블명에 "" 를 붙이는 것을 잊지말자!
Thanks to 박 님과 나와 고군분투해준 헵양..ㅎ
'웹 개발' 카테고리의 다른 글
Modal 창 구현2 (1) | 2023.10.25 |
---|---|
Modal 창 구현 (1) | 2023.10.24 |
카카오 지도 api 활용 - 다양한 이미지 마커 표시하기2 (1) | 2023.10.24 |
카카오 지도 api 활용 - 주소를 통해 위도경도 알아내기 (1) | 2023.10.23 |
카카오 지도 api 활용 - 다양한 이미지 마커 표시하기 (1) | 2023.10.23 |