본문 바로가기
WIKI 기술 지식 베이스

데이터베이스 업로드

원문 보기 위키 갱신

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)