일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Collection
- 스레드
- 자료구조
- 도커 엔진
- LIST
- container
- 제네릭스
- 스레드 제어와 생명 주기
- Docker
- 멀티 쓰레드
- 자바
- Thread
- 도커
- 쓰레드
- contatiner
- Kubernetes
- 쿠버네티스
- 리스트
- 알고리즘
- 실전 자바 고급 1편
- 실전 자바 중급 2편
- java
- 중급자바
- 시작하세요! 도커 & 쿠버네티스
- 시작하세요 도커 & 쿠버네티스
- 동시성
- 컨테이너
- 오케스트레이션
- 인프런
- 김영한
- Today
- Total
쌩로그
나도 효율을 찾는 사람입니다. 본문
내가 지금 하고 있는 업무는 엑셀에 있는 데이터를 DB에 넣는 작업 중에 있다.
해당 글은 나에 대해 돌아보는 글이다.
고객사로부터 넘어온 데이터를 DB에 넣고 있는데..효율을 찾다가 찾은 것이 CSV로 데이터를 넣는 것이다.
지금 내린 결론이 어떻게 도달했는지에 대해 풀어보고자 한다.
1. 믿었던 멀티커서
DB에 접근하는 툴로는 현재 인텔리제이를 개발한 회사인 JetBrains에서 만든 Tool인 데이터 그립을 사용 중이다.
인텔리제이와 단축키와 UI가 정말 똑같아서 유용하게 쓸 수 있다.
물론, 인텔리제이에서도 Ultimate 버전이라면, DB를 접근할 수 있도록 지원을 한다.
그리고 DataGrip에서 지원하는 멀티커서 기능을 믿고 엑셀 데이터를 밀어넣는 쿼리를 빠르게 쉽게 만들줄 알았다.
처음에 200건의 데이터를 시도했다.
예를 들어, member라는 테이블에 이름, 나이, 학교, 생년월일에 대한 insert를 만든다 치면
inserti into memebr (name, age, school, birth) values
를 해놓고,
멀티커서를 통해서

이런식으로 열린괄호('('), 그리고, 엑셀의 열을 복사 , 멀티커서에 붙여넣기, 쉼표(,)... 닫힌 괄호(') 마지막에 쉼표(,) 그리고 끝열에는 세미콜론(;)을 하는식으로 생각했다.
처음 데이터 수십 건은 뭐 나름대로 괜찮았다..
그런데, 200건이 되는 걸 그렇게 하려니까,, 문제가 슬슬 발생했다.
먼저는 Tool이 무겁다보니까 느려지기 시작했다. 메모리는 차서 느린데, 내 마음은 빨리 쳐내고 싶은 서두름이 서로 싱크가 맞지 않았다....
흠... 그리고 DB에 텍스트를 넣을 떄 그 안에 어퍼스트로피가 있으면 ''
와 같이 두 번을 찍어줘야 한다.
텍스트 데이터가 특히나 많은데,,, 언제 그 오류를 다 발견해서 수정하고,,
언제 다 붙이지 하기도 했고, 지금은 데이터가 200건인데, 8000건, 1만건, 크게는 2만 5천건까지 있으니... 이건 아니라는 생각을 하게되었다
2. 멀티 커서를 한 번 더..
아 물론 데이터가 큰 걸 바로 시작하진 않았다..
지금 하는 방식을 회사 선배한테 보여줬는데, 회사 선배는 '"성수씨가 그렇게 하는 방법이라면, VSCode 를 추천해요~"라고 하더라..
그래서 VSCode를 사용했다.
확실히 가벼워지긴 했다..
그래도 텍스트 안에 있는 어퍼스트로피가 나를 여전히 괴롭혔다..
일단은 툴에 의지하면서 계속 진행했는데,,,
데이터를 이미 4만 건을 넣고 있던 회사 동기가 있었다...
어떻게 만들었냐고 물어봤는데, 자기는 엑셀 함수를 사용한다고 하더라..
속으로 "음.. 그런 게 있구나" 하고, 정 안되면 해보겠다고 말했다...
(근데 이거 진작에 했어야 했는데,, 후에 동기한테 왜 나한테 말리지 않았냐면서 혼자 좋은 거 알고 있다고 웃으면서 얘기했다..)
3. 엑셀 함수
바로 위에 말했지만, VsCode의 멀티커서보다 더 좋은 방법을 찾아야했다.
엑셀 함수였다..
이건 정말 신세계였다..
나는 지금도 여전히 그렇고, 시간이 지나면서 조금은 수그러 들었지만 지금도 모르는 것에 대한 두려움이 늘 있다..
낯설고 두렵기 때문이다.
근데, 지금 막 들은 생각이지만, 낯설고 두려운 건 언제나 더 좋은 생산성과 더 넓은 시야를 가져다 준거 같다..
엑셀 함수를 GPT한테 물어봤다..
예시로 알려주던데, 솔직히 자바보다 더 쉬웠던 거 같다.
"오.." 하면서 적용해봤는데 와 이건 신세게였다..
그리고 각 2번 행에 대한 함수만 잘 짜놓고 밑으로 쫙 긁으면 모든 행에 대해 순차적으로 다 적용이 되니까 일의 효율이 훨씬 늘었다..
멀티 커서로 4~5시간 시행착오 겪으면서 밀어넣었떤 200건이었는데,
엑셀 함수 쓰니깐, 하나의 테이블당 1시간은 덜 걸렸던 거 같다..
아...엑셀 데이터로 insert문 짜는데, 1시간이나 걸리냐고 생각할 수도 있겠다..
테이블에 데이터를 입력하기 위해 단순히 엑셀 데이터로 쿼리를 만드는 것 외에도
- 각 Id에 대한 매핑값들을 넣고, 찾고
- 각 Id에 시퀀스가 시퀀스 테이블의 값과 일치하는지 안 하는지 여부
- 그리고 운영에 반영할 때는 해당 과정들을 다 기록해놓고 작업 계획서를 제출해야되다보니, 작업에 대한 절차도 기록 기타 등등
- 모든 걸 고려하고, insert문을 작성하다보니깐 시간이 아무래도 1시간 쯤 걸렸던 거 같긴한다.
- 물론 작업하면서 점점 시간이 줄어들었다.
여하튼 엑셀 함수를 사용하니깐
속도와 생산성은 더 빨라졌다..
중간에 어퍼스트로피도 엑셀 함수로 두 번이 들어가도록 했다.
4. 현재 찾은 효율 끝판 CSV
어쨌든 회사 동기한테 "와.. 엑셀함수 업무 효율 겁나 높여주는데요? 왜 저한테 뜯어서 하라고 안 했습니까..ㅠㅠㅋㅋㅋㅋ" 라고 했다.
이후 대화가 오가다가 "근데 성수님은 CSV로 데이터 밀어넣어도 되지않아요?" 라고 하더라..
그래서 이번에는 곧장 CSV를 사용해보기로 했다.
왜냐하면 또 진작하지 않으면 후회할 것만 같았다..
그래서 CSV로 이번엔 데이터를 밀어넣어봤다.
원래는 insert문을 만들때, 자바로 컬럼의 개수에 따라 insert문이 자동으로 만들어지도록 함수를 자바로 작성해서 출력하게 만들기도 했다..
어떻게든 좀 빠르게 해볼려고....
그래서 그걸 회사 동기한테 넘겨주긴 했는데..
그래서 예를 들어 A~D 열이 있다고 치면,
="INSERT INTO [테이블] ("&A1&", "&B1&", "&C1&", "&D1&",) values"
을 D열의 두칸 뒤인 F1에 넣어두고, 밑으로는="('"&A2&"', '"&B2&"', '"&C2&"', '"&D2&"'),"
를 작성하고 더블클릭 및 밑으로 열을 쫙 내리면 해당 values 쿼리가 만들어진다..
근데 데이터만 잘 맞춰놓고 CSV로 저장하고 밀어넣으면 위에 과정 필요없이
데이터가 그냥 손쉽게 들어갔다..
엑셀은 거의 만지지 않고, csv로 저장만 하면 해당 데이터가 들어간다.
그 외에 나는 데이터만 잘 맞춰놓으면 끝나는 것이다..
그래서 현재 내린 결론은 엑셀 데이터를 DB에 저장할 때 CSV로 데이터를 밀어넣어야 한다. 라는 결론에 도달하게 되었다..
5. 하고 싶은 말
그럼 왜 나는 이 글을 작성했을까....?
오늘 만난 분들과의 대화 속에서
혼자 사소하게 넘겼거나, 간과했던 부분 뿐만 아니라,
내가 이렇게 결론을 내리게 된 과정과 생각의 흐름조차 기록을 해놓는 것이 좋을 거 같다는 생각을 하게 되었다..
그리고 이런 부분도 지금 생각해보니 성장 과정 이라고 생각한다.
여하튼 결론은 "나도 효율을 찾는 사람이다."고 말하고 싶다는 것.
만약 누가 "그 근거를 보여달라"고 할 것이다.
아마 이 과정을 기억해놓으면,
"나는 이런 부분에서라도 나는 효율을 찾기 위해 노력했다."
뿐만 아니라,
"일에 효율이 안 난다고 스스로 느낄 수 있는 사람"
이라고 말할 수 있을 거 같다.
그리고 url들의 데이터가 있다.
대외비 부분이라, 자세히는 말하지 못하지만,
예를 들면,
우리나라 도시에서 서울애 대한 경로가 부산으로 바뀌어야 한다면,
/seoul
을 /busan
으로 바꿔야했다..
나는 어떻게 했을까??
아래와 같이 했다.
public class PathReplacer {
public static void main(String[] args) {
String paths = "
//경로데이터들 아래에 복붙
"/seoul/blabla\n" +
"/seoul/blabla1\n" +
"/seoul/blabla2\n" +
...
";
result = paths.reaplaceAll("/seoul/", "/busan/");
sout(result);
}
}
해서 나온 결과를 엑셀 열에 그대로 복붙했다.
이렇게 효율을 계속 찾았다...
여하튼 나도 효율을 찾는 사람이며, 효율이 나는지 안 나는지 스스로 판단할 수 있는 사람이다.
P.S
사실 나는 "효율을 찾는 사람"이라는 내용을 말하고 싶었는데,
이러한 과정을 기록해보니..
내가 "효율이 나는지 안 나는지 스스로 판단할 줄 아는 사람" 이라는 것을 지금 알게 되었다.
사실 요즘 많이 의욕도 떨어지고, 동기부여도 제대로 되지 않고 정체되어 있었다.
그런데, 과정을 기록하면서 돌아보니... "부정적인 쪽으로 치우쳐져 있지 않아도 되겠다.."는 생각이 든다.
그래서 일기를 써야하나...??
'생각 정리' 카테고리의 다른 글
코딩에 대한 나의 원칙 세우기 : crud 메서드 naming (0) | 2025.03.13 |
---|---|
스스로 생각하기에 부족함이 많다는 것 (2) | 2024.08.29 |