안녕하세요
오늘은 Supabase DB (PostgresQL) 에 연동해서 Data를 Insert 하는 방법을 알아보겠습니다.
1. Supabase 가입/로그인 하기
우선.. Supabase 사이트(https://supabase.com/) 에 접속합니다. 그러면 아래와 같은 화면이 뜹니다.

저는 이미 가입이 되어 있어서 그냥 로그인을 하는데.. 가입되어있지 않으신 분들은 Github 계정 등과 연동하여 무료 Plan으로 쉽게 가입해서 Organization을 생성 할 수 있습니다.
저는 아래와 같이 1개의 Organization이 존재합니다. 여기를 클릭해서 들어가 보면 Organization 선택하는 화면과 유사한 프로젝트 선택화면이 나오는데, 동일한 방식으로 프로젝트를 선택해서 들어가면.. 관리 페이지가 나옵니다. (없으면 프로젝트 생성!)
2. Organization / Project 선택


3. 테이블 생성
테이블 생성은 SQL을 수동으로 입력해서 생성할 수도 있고, 아래와 같이 Database 메뉴로 이동하여 Tables -> 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 ] 에서 확인 가능합니다.

이제 준비가 끝났습니다.
아래와 같이, 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 |
|---|