📌 EdgeQL 반복 삽입 코드 완전 분석

2025. 5. 28. 14:40·기술블로그-Fastapi편

📌 EdgeQL 반복 삽입 코드 완전 분석


🎯 목표

EdgeDB에서 FOR ... IN ... UNION 문법을 사용해 수만 개의 데이터를 한 번에 삽입하는 방법과, 그 과정에서 사용되는 int64의 개념을 함께 이해합니다.


✅ 전체 코드

FOR x IN range_unpack(range(1, 100000)) UNION (
    INSERT Movie {
        title := "Movie " ++ <str>x
    }
);

🧩 코드 분석

1. range(1, 100000)

  • 의미: 1부터 99,999까지의 정수 범위 객체 생성
  • Python의 range()와 유사하지만, 결과는 "range 타입"이지 실제 숫자 목록은 아님

2. range_unpack(...)

  • 역할: range 객체를 하나씩 숫자로 풀어줌
  • 결과: 1, 2, 3, ..., 99999 값이 반복문에 순서대로 들어감

3. FOR x IN ... UNION (...)

  • 루프를 도는 구조
  • x에 숫자가 하나씩 들어가며, 아래의 삽입문이 반복 실행됨

4. INSERT Movie { title := "Movie " ++ <str>x }

  • Movie 테이블에 새로운 레코드 추가
  • title 값은 "Movie 1", "Movie 2", ... 형식으로 생성됨
  • x는 숫자이므로 문자열로 변환 필요 → <str>x 사용

5. ++ 연산자

  • 문자열을 붙이는(Concatenate) 연산자
  • "Movie " + "1" = "Movie 1" 형태로 구성됨

🧠 int64란?

🔹 정의

  • int64는 64비트 정수형 (integer 64-bit)의 약자
  • 컴퓨터가 처리할 수 있는 정수 타입 중 가장 넓은 범위를 지원

🔹 왜 필요할까?

  • 숫자를 저장할 때, 얼마나 큰 숫자를 다룰 수 있는지가 중요함
  • 비트 수가 클수록 더 큰 숫자를 저장 가능

타입 비트수 표현 가능한 범위

int8 8비트 -128 ~ 127
int16 16비트 -32,768 ~ 32,767
int32 32비트 약 -21억 ~ 21억
int64 64비트 약 -9경 ~ +9경

🔹 EdgeDB에서의 사용

  • range_unpack()을 통해 나온 숫자는 기본적으로 int64 타입
  • 문자열과 붙이기 위해서는 반드시 형변환 <str>x 필요

🔍 정리

항목 설명

range_unpack 범위를 숫자 리스트로 풀어줌
FOR x IN ... UNION 각 숫자마다 루프를 돌며 삽입 수행
int64 64비트 정수형, 기본 숫자 타입
<str>x 숫자를 문자열로 변환 (형변환)
++ 문자열을 붙이는 연산자

💡 실무 팁

  • 대량의 데이터를 삽입할 땐 위와 같은 루프 기반 INSERT가 매우 유용
  • 문자열을 만들 때는 항상 타입을 맞춰줘야 에러를 방지할 수 있음

궁금한 다른 EdgeQL 문법이나 예시가 있다면 언제든 요청해 주세요! 😊

'기술블로그-Fastapi편' 카테고리의 다른 글

📌 데이터베이스 검색 방식: Seq Scan vs Index Scan 정리  (0) 2025.05.28
📌 데이터베이스 인덱스(Index)와 B-Tree 구조 정리  (0) 2025.05.28
📌 EdgeQL 쿼리 패턴 완전 정복  (0) 2025.05.28
📌 EdgeDB 마이그레이션 꼬임 해결: 전체 초기화 루틴  (0) 2025.05.28
📌 WSL + VS Code 연동 및 'code' 명령어 설정 방법 정리  (0) 2025.05.28
'기술블로그-Fastapi편' 카테고리의 다른 글
  • 📌 데이터베이스 검색 방식: Seq Scan vs Index Scan 정리
  • 📌 데이터베이스 인덱스(Index)와 B-Tree 구조 정리
  • 📌 EdgeQL 쿼리 패턴 완전 정복
  • 📌 EdgeDB 마이그레이션 꼬임 해결: 전체 초기화 루틴
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794) N
      • Python (32)
      • 프로젝트 (113)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154) N
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bts
    chatgpterror
    gpterror
    college reunions
    chinanightlife
    newpoliticalparty
    urbantrends
    trumpmuskclash
    global politics
    btsreunion
    life reflection
    btscomeback
    remittance
    self-growth
    livebroadcast
    homebartrend
    btsdischarge
    smartphonedurability
    americanlaw
    뷔
    lawsuitculture
    youngprofessionals
    btsjungkook
    RM
    travel ban
    titaniumcase
    hotcoffeecase
    americaparty
    classaction
    basalcellcarcinoma
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 EdgeQL 반복 삽입 코드 완전 분석
상단으로

티스토리툴바