DB

오늘의 고군분투 - MySQL db 설정과 json 파일 import

haerangssa 2024. 7. 24. 01:47

오늘의 큰 걸림돌은

db 생성 후 json 파일 연결이 되겠습니다.

 

사실 아직도 해결 못해서 간간히 검색해 보면서 해결하고 수정해 나갈 예정..


준비물: mysql, mysql workbench 설치 및 활용할 json파일. ( 헌옷수거함의 id, 주소, 위도, 경도가 담긴 파일 )

+ 필드를 컬럼으로 더 자주 쓴다는 사실을 알다

 

- 생성

 

1. db 생성 및 확인

1. DB 생성
CREATE DATABASE 내가만들디비명 DEFAULT CHARACTER SET UTF8;
>> db 생성 후 한글 사용할 수 있게 utf8로 문자열 저장

2. 생성된 DB 보기
SHOW DATABASES;
>> db 목록을 보여줌

나의 경우에는 allo_db 라고 이름 붙임 ㅇㅇ

 

2. 데베 선택

USE 내가만든db이름;

 

3. 테이블 생성

CREATE TABLE 테이블이름
(
    필드이름1 필드타입1,
    필드이름2 필드타입2,
    ...
);

예시로는,,

CREATE TABLE HH
(
    ID INT,
    ADDRESS VARCHAR(30),
    REGION VARCHAR(30),
    X DECIMAL(16,14),
    Y DECIMAL(17,14)
);

+ 테이블 생성(CREATE TABLE) 시 사용할 수 있는 제약조건

1. NOT NULL : NULL 값을 저장할 수 X.

2. UNIQUE : 로 다른 값을 가져야만 함. 오로지 하나씩..

3. PRIMARY KEY : NOT NULL && UNIQUE 

4. FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 함.

5. DEFAULT : 해당 필드의 기본값을 설정.

 

+ AUTO_INCREMENT 키워드를 사용하면 해당 필드의 값을 1부터 시작해 새로운 레코드가 추가될 때마다 1씩 증가된 값을 저장함.

 AUTO_INCREMENT 키워드 다음에 대입 연산자(=)를 사용하여 시작값을 변경할 수 있음

 

+ 새로운 필드 추가

ALTER TABLE 테이블명 ADD 필드명 필드타입;

예시...
ALTER TABLE HH
ADD HJ INT;

 - 삭제 & 변경

 

1. 필드 삭제

ALTER TABLE 테이블명 DROP 필드명;

예..
ALTER TABLE HH
DROP HJ;

 

2. 필드 타입 변경 

ALTER TABLE 테이블명 MODIFY COLUMN 필드명 필드타입;

ㅇ.
ALTER TABLE HH
MODIFY COLUMN HJ VARCHAR(30);

 

3. 테이블 삭제 

DROP TABLE 테이블명;
# 테이블 삭제 시 데이터도 모두 삭제됨

 

4. 테이블의 모든 데이터 삭제

TRUNCATE TABLE 테이블명;

- MySQL workbench와 DB 연결

 

1. connection name 설정(메인화면에서 뜨는 그 이름 ㅇ ㅇ)

 

2. 스키마 입력 (이전에 만들어둔 db)

 

3. test connection 누른 후 successfully made the MySQL connection 뜨면 ㅇㅋ 누름

그럼 이제 mysql workbench에 내 디비가 올라왓음니다!!

 

create table할 때 설정해 둔 필드타입들 보면서 차차 연결을 완성해 봅시다

하근데 소문자로 만들걸!!! 변경하긴 귀찮으니 일단 넘어가장

(cloth오타ㅠ도 고치고 소문자로 다시 만들다..)

 


 

- MySQL 워크벤치에 json파일 import 하기

 

1. 스키마 우클릭 후 table data import wizard 클릭

 

2. json 파일 불러오기

 

 

3. 테이블 생성창에서 테이블 선택

>> 나의 경우는 기존의 테이블 clothes_store을 선택했음.

 

4. column 확인

(변경 전 캡쳐본 ㅎ)

 

5. 테이블 조회 명령어를 통해 연결이 잘 되었는지 확인

SELECT * FROM db명.테이블명;

 

아래 사진과 같이 입력 후 쿼리1 밑의 깔끔하고 이쁜 번개모양을 누름 ㅇㅇ.

(변경 전 캡쳐본 ㅎ)

 

6. 연결된 json 데이터 확인

(변경 전 캡쳐본 ㅎ)

원래 테이블에 json 파일의 데이터가 쏙쏙 들어와야하는데 난 자꾸 여기서 문제가 생김..

 

 


- 해결해야할 문제는 0 records imported 

아니 도대체 외? ㅠㅠ

검색해서 찾아본 원인들

 

1. json 형식 데이터의 key값과 db column 이름이 일치하지 않음

>> 처음에 필드 정의할 때 대문자로 써서 그런가?

라기엔 그 전의 시도들에서는 id-id , address-address,,, 등 깔끔하게 매칭이 되었음에도 불구하고 데이터가 안 불러와짐.

>> 테이블 갈아엎고 다시 소문자로 예쁘게 작성해도 0 record imported

 

2. foreign key로 참조하는 데이터를 찾을 수 없음.

>> 놉

 

3. 접근할 수 없는 위치이거나 보안 문제로 접근 불가

혹시 모르니 json 파일 데스크탑으로 옮기기 

>> 실패

 

4. 뇌피셜

모두 not null로 바꿔볼까??

>> 실패

 

5. 혹시나 파일의 공밲때문에?!?!!?!?!?

>> 놉

 

6. 위,경도의 소수점 전체를 문자열로 수정해주어야한단 글도 많이 보이네?

>> 내일 이어서 ㄱㄱ

 


정답을 찾아내다.

결론은 x 와 y의 데이터가 바뀌어있었음.

(위도 경도가 반대)

 

3일간의 대장정 마무리 ^^/.

 

id VARCHAR(255)
address VARCHAR(255)
region INT
x DECIMAL(16,14)
y  DECIMAL(17,14)