매우 심플한 Node.js (Typescript) - Supabase DB (PostgresQL) 연동해서 데이터 넣기!

2025. 5. 4. 18:47·Study/Supabase

안녕하세요

오늘은 Supabase DB (PostgresQL) 에 연동해서 Data를 Insert 하는 방법을 알아보겠습니다.

 

1. Supabase 가입/로그인 하기

우선.. Supabase 사이트(https://supabase.com/) 에 접속합니다. 그러면 아래와 같은 화면이 뜹니다.

[Supabase 메인페이지] - 계정이 없으면 Start your project 누르면 됩니다.


저는 이미 가입이 되어 있어서 그냥 로그인을 하는데.. 가입되어있지 않으신 분들은 Github 계정 등과 연동하여 무료 Plan으로 쉽게 가입해서 Organization을 생성 할 수 있습니다.

저는 아래와 같이 1개의 Organization이 존재합니다. 여기를 클릭해서 들어가 보면 Organization 선택하는 화면과 유사한 프로젝트 선택화면이 나오는데, 동일한 방식으로 프로젝트를 선택해서 들어가면.. 관리 페이지가 나옵니다. (없으면 프로젝트 생성!)

2. Organization / Project 선택

[Organization 선택 화면]
[프로젝트 생성] - 생성한 프로젝트가 없다면 프로젝트를 하나 만들어주세요

3. 테이블 생성

테이블 생성은 SQL을 수동으로 입력해서 생성할 수도 있고, 아래와 같이 Database 메뉴로 이동하여 Tables -> New table 을 이용하여 생성할 수 있습니다.

[New Table 찾아가기]

일반적인 PostgresQL과 동일하게 설정해서 테이블을 생성할 수 있습니다.

[테이블 생성] 이름/컬럼 등 정보를 세팅하여 저장만 하면 끝

저는 아래와 같이 column을 구성했습니다.

4. Insert 정책 설정

생성한 테이블들을 API로 Insert / Select 하는 권한을 부여해야 합니다. 아래와 같이 SQL 에디터에 입력하면 권한이 생성됩니다.

# service_role 에 insert 정책 부여
create policy "Allow insert"
on liquidations # 테이블명
for insert
to service_role
with check (true);


# 기본적으로 public 스키마에 insert / select 권한이 service_role에 없어서 아래의 권한 부여
# insert 권한
grant insert on table public.liquidations to service_role;
# select 권한
grant select on table public.liquidations to service_role;

update나 delete권한이 필요하면 추가적으로 grant 하면 됩니다~!

 

5. Node.js에서 Insert 하기

npm 에서 필요한 라이브러리를 설치합니다.

npm install @supabase/supabase-js

.env에는 아래의 설정이 필요합니다.

SUPABASE_URL={Project URL}
SUPABASE_KEY={Service Role Key}
SUPABASE_TABLE={Table Name}

설정 정보는 아래 그림과 같이 [ Project Settings > Data API ] 에서 확인 가능합니다.

[Data API 화면]

이제 준비가 끝났습니다.

아래와 같이, supabase.from(table).insert( ... ) 를 수행하기만 하면! 데이터가 쌓이는 것을 확인할 수 있습니다.

import { createClient } from '@supabase/supabase-js';
import dotenv from 'dotenv';
dotenv.config();

const supabase = createClient(process.env.SUPABASE_URL!, process.env.SUPABASE_KEY!);
const table = process.env.SUPABASE_TABLE || 'liquidations';

export async function insertLiquidation(
  symbol: string,
  side: string,
  price: number,
  quantity: number,
  timestamp: number
) {

  console.log('[Before DB INSERT]', {
    symbol,
    side,
    price,
    quantity,
    timestamp: new Date(timestamp).toISOString()
  });

  try {
    const { error } = await supabase.from(table).insert([{
      symbol,
      side,
      price,
      quantity,
      timestamp: new Date(timestamp).toISOString()
    }]);
    if (error) {
      console.error(`[DB ERROR] ${symbol}`, JSON.stringify(error, null, 2));
    } else {
      console.log(`[DB] ${symbol} inserted`);
    }
  } catch (e) {
    console.error(`[DB EXCEPTION] ${symbol}`, e);
  }
}

 

6. Data 확인!

Table 에디터에서 만든 테이블을 확인 하면, 테이블에 저장된 데이터를 확인할 수 있습니다.

 

7. 마무리

오늘 Supabase에서 Table을 생성하고, Node.js를 통해 데이터를 Insert하는 방법을 간단하게 알아보았는데요. 사실 Supabase는 단순 DB 뿐만 아니라, S3와 같은 Data Storage도 제공하고, Edge Function이라는 Hook도 존재하는데요.. 나중에 더 많은 기능들을 알아보도록 하겠습니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'Study > Supabase' 카테고리의 다른 글

Supabase와 OpenAI를 활용한 AI 검색 시스템 구현하기  (1) 2025.05.17
'Study/Supabase' 카테고리의 다른 글
  • Supabase와 OpenAI를 활용한 AI 검색 시스템 구현하기
모리군
모리군
    반응형
  • 모리군
    나의 일상 그리고 취미
    모리군
  • 전체
    오늘
    어제
    • 분류 전체보기 (23)
      • 독백 (0)
      • Study (11)
        • Authentication (4)
        • Supabase (2)
      • Javascript (3)
        • node.js (0)
        • react.js (0)
        • vue.js (0)
        • LeetCode (3)
      • AI (0)
      • PHP (0)
      • HTML, CSS (0)
      • 툴, 플러그인 (0)
      • 취미 (1)
        • 보드게임 (1)
      • 교통 (0)
        • 철도 (0)
        • 도로 (0)
      • 부동산 (2)
        • 서울 (0)
        • 경기 성남 (0)
        • 경기 수원 (0)
        • 경기 화성 (2)
        • 경기 남양주 (0)
        • 광주 (0)
      • 역사 (4)
        • 이 주의 역사 (1)
      • 영어기사 읽기 (1주일 1번) (0)
        • 스포츠 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Spring Boot
    FastAPI
    벡터데이터베이스
    광주민주화운동
    JWT
    백엔드개발
    express
    typescript
    Rag
    javascript
    프롬프트엔지니어링
    웹 서비스
    node.js
    백엔드
    ChatGPT
    카카오T 대리
    토큰관리
    슈파베이스
    OpenAI
    PostgreSQL
    supabase
    초기 영화
    LeetCode
    임베딩
    한국발명
    윌리엄 딕슨
    REST API
    java
    algorithm
    대리운전
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
모리군
매우 심플한 Node.js (Typescript) - Supabase DB (PostgresQL) 연동해서 데이터 넣기!
상단으로

티스토리툴바