> ## Documentation Index
> Fetch the complete documentation index at: https://docs.conare.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Von Turbopuffer migrieren

> Kopiere jede Turbopuffer-Zeile, jeden Vektor und jedes Attribut per wiederaufnehmbarem, verifizierendem Importer read-only in ConareDB.

Die laufende Engine bringt ihr eigenes Migrations-CLI mit – lade es vom Service, damit es stets zum deployten Build passt:

```bash theme={null}
curl -fsSO https://db.conare.ai/v1/tools/migrate-turbopuffer.py

export TURBOPUFFER_API_KEY='tpuf_...'
export CONAREDB_API_KEY='cdb_...'

python3 migrate-turbopuffer.py \
  --source-namespace my-production-data \
  --destination-namespace acme-production
```

## Was es garantiert

* **Read-only auf der Quelle.** Es löscht oder verändert niemals Turbopuffer-Daten, und dein Turbopuffer-Key wird nie an Conare gesendet.
* **Wiederaufnehmbar.** Pagniert nach aufsteigender id, upserted Ziel-Batches atomar und schreibt nach jeder bestätigten Page einen secret-freien Checkpoint – brich ab und starte neu, es macht dort weiter, wo es aufhörte.
* **Verifizierend.** Compactet das Ziel und verifiziert die Zeilenzahl, wenn die Kopie abgeschlossen ist.
* **Fail-closed.** Der Importer unterstützt eine Dense-Vector-Spalte pro Namespace; Multi-Vector-, Sparse-Vector- und Late-Interaction-Namespaces schlagen mit explizitem Fehler fehl, statt still Daten zu verlieren.

## Optionen

| Flag                                          | Zweck                                      |
| --------------------------------------------- | ------------------------------------------ |
| `--all-namespaces --destination-prefix acme-` | Kompletten Account migrieren               |
| `--dry-run`                                   | Erste Page validieren, ohne zu schreiben   |
| `--vector-attribute name`                     | Wenn die Vektorspalte nicht `vector` heißt |

## Nach der Migration

Queries lassen sich natürlich portieren: Der [`/v2`-Query-Shim](/db/search#turbopuffer-compatible-shim) akzeptiert die Turbopuffer-Read-Form (`rank_by`, `filters`, `top_k`, `include_attributes`) direkt, und die native [`/v1/search`](/db/search)-Filter-DSL verwendet dieselben `[property, op, value]`-Operatoren, die du bereits schreibst.
