데이터 읽고 쓰기
질의 문법, 연산자, 한글 부분 검색.
데이터 읽고 쓰기
PostgREST와 같은 문법이에요. 기존 클라이언트 SDK를 그대로 써요.
GET /rest/v1/<표>?select=id,body&order=created_at.desc&limit=20
GET /rest/v1/<표>?body=ilike.*서울*
POST /rest/v1/<표> 본문: {"body":"안녕"} 또는 [{...},{...}]
PATCH /rest/v1/<표>?id=eq.<값>
DELETE /rest/v1/<표>?id=eq.<값>연산자
eq neq gt gte lt lte like ilike match imatch cs cd ov sl sr nxr nxl adj isdistinct is in fts plfts phfts wfts
앞에 not.을 붙이면 뒤집혀요(status=not.eq.done). or=(a.eq.1,b.gt.2), and=(…)로
조건을 묶을 수 있고, like·ilike의 *는 %와 같아요. select에는 별칭(label:title),
형 변환(id::text), 외래 키로 이어진 표(*,author(name))를 쓸 수 있어요.
함수는 POST /rest/v1/rpc/<함수>로 불러요. 포함된 표에 거는 조건과 다대다 관계는 아직 없어요.
없는 것이 필요하면 run_sql로 뷰를 만들어 그 뷰를 읽으세요.
모르는 연산자는 무시하지 않고 이름을 대며 거부해요. 걸리지 않은 필터는 정보 노출이 되기 때문이에요.
한글 부분 검색
pg_trgm이 켜져 있어요. 한국어는 조사 때문에 단어 검색이 잘 안 맞으니
세 글자 단위 비교를 써요.
create index if not exists notes_body_trgm on notes using gin (body extensions.gin_trgm_ops);
select * from notes where body % '서울';임베딩 검색(pgvector)과 지도(PostGIS) 같은 다른 확장은 blackwall://extensions를 보세요.
CSV로 내보내고 가져오기
export_table_csv가 표의 줄을 CSV로 돌려줘요(1MB까지, 넘으면 줄 단위로 잘라 truncated). filters와 sort로 범위와 순서를 고르고, 큰 표는 범위를 나눠 여러 번 받아요.
import_table_csv는 CSV를 표에 넣어요(2MB, 10,000줄까지). 첫 줄의 열 이름과 같은 열에 들어가고, 한 줄이라도 들어가지 못하면 아무것도 넣지 않고 줄 번호와 이유를 알려 줘요.
REST로는 GET /v1/projects/<ref>/tables/<표>/csv와 POST /v1/projects/<ref>/tables/<표>/csv {csv, columns}이에요.