mariaDB data용 임시 테이블만들어 insert하기

유비빅·2022년 8월 26일
0

💡

  1. DB에 넣을 .csv 파일을 제공받았는데 테이블에 들어갈 id값대로 나눠서 약 70개정도 제공 받았고,
    .csv 내에 없어도 될 컬럼이 있는 채로 전달받았다
  2. 그 많은 컬럼 중 두개의 컬럼을 삭제하고 DB에 insert할 때는 합쳐진 다른 주소로 작성해야했다
  3. DB default는 UTF-8이였는데 제공받은 .csv는 ANSI여서 Encoding문제도 맞닥드렸다

🤦‍♀️

  1. 해결하기 위한 방법으로 .csv를 테이블과 같이 변경 -> Encoding도 변경하여
    자바 코드로 파일 한개씩 insert 한다 -> 의외로 시간이 많이 걸려서 포기❌
  2. mariaDB접근해서 load 쿼리를 이용하여 insert 한다 -> Encoding문제와
    테이블과 구조를 똑같이 해야 제대로 들어가는걸 확인해서 포기❌
  3. 해당 약 70개 .csv를 전체 한 개의 파일로 모아서 파일대로 테이블을 생성해 임시테이블을 만든다
    -> 필요한 데이터만 select 해서 넣어야할 테이블에 insert한다 ⭕

📑

  1. 우선 여러개 .csv를 하나로 합친다
    아래 방법을 이용하면 되는데 파일이 합쳐진부분이 두번 생성되기때문에 그만큼 삭제를 한 후
    마지막 방법으로 컬럼명들을 삭제하면 된다(두배로 보여서 놀랐었다🤐)

    • cmd창을 이용해 .csv가 모아진 폴더로 이동한다
      *.csv > total(합친결과파일이름).csv 이라고 입력
      컬럼명이 있다면 중복으로 들어가므로 완성된 csv 파일을 열어서 해당 행은 일괄 삭제
  2. 합친 .csv와 같은 임시테이블을 생성한다
    이 때 임시테이블은 합친 csv와 같게 컬럼을 작성해야한다.
    후에 필요한 컬럼만 뽑아서 insert할 것 이기때문에 우선 모두 넣어두면 된다.

  3. 위에서 말한 두개의 컬럼을 하나의 다른 내용으로 작성해야할 매핑 테이블이 나는 필요해서 생성했다.
    두개의 컬럼은 예를 들면 우편번호와 주소같은 거였는데 유니크한 아이디를 이용해서 매핑테이블을 만들었고
    바꿔야할 한개의 컬럼으로 상세주소를 작성해서 만들었다고 이해하면 쉬울 것 같다🤔
    그리고 같이 조인할 key를 두고 매핑 테이블과 join해서 insert할 수 있었다

  4. 이때 최고의 꿀팁은 Editer 정규식
    변경할 사항은 vsCode든 intelliJ를 이용해 수정한다

  5. 매핑테이블과 임시테이블에 우선 필요한 자료를 뽑아본다. (정확한지 확인)

select r.상세주소, t.데이터1, t.데이터2, t.데이터3, t. 아이디
from 임시테이블 t join 매핑테이블 r on r.아이디 = t.아이디;
  1. 확인되면 이 데이터들을 실테이블에 insert한다
insert into 실테이블 (상세주소, 데이터1, 데이터2, 데이터3, 아이디)
select r.상세주소, t.데이터1, t.데이터2, t.데이터3, t. 아이디
from 임시테이블 t join 매핑테이블 r on r.아이디 = t.아이디;

0개의 댓글