지난 글에 이어서 mysql을 쓰게 되었다.

모든 테이블에서 특정 값으로 조건에 맞는 데이터를 찾는 것인데

sql 잘하시는 분들이 쓰신 여러 글을 볼 수 있었지만 따라하기 무서웠다

겉핥기 중인데다가 js로 하고 있어서 좋지 않은 방법인지는 모르겠지만 쉽게 할 수 있길래 공유한다

export const getDbDistribute = async (root, args) => {
    try {
    // 스키마에서 모든 테이블 이름 배열로 저장하기
      const [tables] = await db.query(`
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'sports_db';
      `);
      let result = [];
 
    // 배열 반복문으로 조건 찾아서 리턴 배열에 저장하기
     await Promise.all(tables.map(async (table) => {
        const [rows] = await db.query(`
        SELECT *
        FROM sports_db.${table.TABLE_NAME}
        WHERE year = ?
        `, [args])
        result.push(...rows);
      }))
      console.log(result)
      return result;
    } catch (error) {
      console.error("쿼리 실행 중 오류:", error);
      throw error;
    }
};

 

쿼리 비동기식이랑 args 쿼리 변수로 사용하는 방법이나 좋은 공부가 되었다.

혼자 해보고 싶은 사이드 프로젝트를 만들다가 처음엔 firebase로 데이터 베이스를 사용하려고 했으나
내가 제공하고자 하는 데이터 양이 너무 많은데 firebase 데이터를 캐싱하는게 쉽지 않았다...

 

내가 개발하면서 하루 사용량 초과하니 말 다했지..

그래서 결국 실질 데이터는 따로 db를 사용하고
계정관리나 게시글 관리 정도만 firebase로 하기로 하고 데이터를 이전하기로 결정했다.

우선 나는 choco를 사용하기 때문에
choco install mysql
로 가볍게 설치해주고(관리자 권한 실행) 

mysql_secure_installation
명령어로 설정을 한다 -> 첫번째만 N / 비밀번호 / 그 후 전부 Y

이렇게 하면 비밀번호 설정도 끝났고 워크벤치까지 choco로 설치
choco install mysql.workbench

2. 워크벤치에서 json 파일 업로드하기

choco로 설치할 경우 root로 이미 하나가 생성되어 있을 수 있다.

가볍게 지워주고(우클릭 delete connection)

워크벤치 메인 이미지
워크벤치 메인 이미지

 

더하기 버튼을 클릭하면 새로운 connection을 생성할 수 있다.

커넥션 생성 창
커넥션 생성 창

 

위에 이름을 써주고 store in vault...를 누르면 비밀번호 입력하는 창이 뜬다
처음에 설정한 비밀번호 입력 후 ok 옆에 Test Connection을 누르면

테스트 연결 성공 화면
테스트 연결 성공 화면


에러난 거 같지만 성공이다 그 후 ok를 눌러주면 생성 끝

데이터베이스 생성 후 첫 화면
데이터베이스 생성 후 첫 화면


다음 더블클릭으로 들어오면 초기화면이 나온다
위에 아이콘이나 스키마 영역 우클릭으로 스키마 생성 후 우클릭 하고 
Table Data Import Wizard 클릭

스키마 우클릭 후 Table Data Import Wizard 클릭
스키마 우클릭 후 Table Data Import Wizard 클릭

 


위치 경로 설정으로 json 파일 선택
그 다음 설정이 몇가지 있지만 기본적으로 next 하면 추가가 완료된다.

import 데이터 확인
import 데이터 확인


테이블로 잘 들어갔다!

'DATABASE' 카테고리의 다른 글

[mysql & js] npm mysql2 모든 테이블에서 특정 값 찾기  (0) 2024.01.19

+ Recent posts