데이터베이스 업로드
seed.type = "database_upload"로 만든 데이터베이스에 SQLite 데이터베이스 파일을 업로드하는 API예요.
출처: 문서
본문
이 엔드포인트는 api.turso.tech가 아니라 데이터베이스 호스트명(예: my-db-my-org.turso.io)에 있어요.
먼저 seed.type = "database_upload"로 데이터베이스를 생성해야 해요.
이 엔드포인트는 플랫폼 API 토큰이 아니라 데이터베이스 토큰이 필요해요. 데이터베이스를 만든 뒤 데이터베이스 토큰을 생성할 수 있어요.
헤더
| 헤더 | 필수 | 설명 |
|---|---|---|
Authorization |
예 | 데이터베이스용 Bearer 토큰 |
Content-Length |
예 | 데이터베이스 파일 크기 (바이트) |
x-turso-encryption-key |
아니오 | Base64 인코딩된 암호화 키 (256비트 암호는 32바이트, 128비트 암호는 16바이트) |
x-turso-encryption-cipher |
아니오 | 암호화 알고리즘. 옵션은 아래 표를 참고하세요. |
요청 본문
원본 바이너리 SQLite 데이터베이스 파일이에요.
데이터베이스 파일 요구 사항
SQLite 데이터베이스 파일은 다음 요구 사항을 충족해야 해요:
- 저널 모드: WAL (
PRAGMA journal_mode = WAL) - 페이지 크기: 4096바이트 (
PRAGMA page_size = 4096) - Auto vacuum: 비활성화 (
PRAGMA auto_vacuum = 0) - 인코딩: UTF-8 (
PRAGMA encoding = 'UTF-8')
암호화된 데이터베이스라면 reserved bytes도 암호 알고리즘에 맞게 설정해야 해요:
| 암호 알고리즘 | Reserved Bytes |
|---|---|
aes256gcm |
28 |
aes128gcm |
28 |
chacha20poly1305 |
28 |
aegis128l |
32 |
aegis128x2 |
32 |
aegis128x4 |
32 |
aegis256 |
48 |
aegis256x2 |
48 |
aegis256x4 |
48 |
응답
성공
성공하면 200 OK 상태의 빈 응답을 반환해요.
오류
| 상태 | 설명 |
|---|---|
400 |
잘못된 데이터베이스 파일 (형식, 설정 오류 또는 손상) |
401 |
잘못되었거나 누락된 인증 토큰 |
요청 예시:
curl -X POST 'https://{database_hostname}/v1/upload' \
-H 'Authorization: Bearer ***' \
-H 'Content-Length: FILE_SIZE' \
--data-binary '@/path/to/database.db'
암호화를 사용한 요청 예시:
curl -X POST 'https://{database_hostname}/v1/upload' \
-H 'Authorization: Bearer ***' \
-H 'Content-Length: FILE_SIZE' \
-H 'x-turso-encryption-key: BASE64_ENCRYPTION_KEY' \
-H 'x-turso-encryption-cipher: aes256gcm' \
--data-binary '@/path/to/database.db'
더 알아보기 (Learn more)
- 데이터베이스 생성 —
database_upload시드로 데이터베이스 만들기 - 데이터베이스 토큰 생성 — 업로드에 필요한 데이터베이스 토큰 발급
- 데이터베이스 조회 — 데이터베이스 정보 확인