# Import Parquet downloaded from object storage

Coordinator DB's documented file source reads confined local files; it is not an object-storage client. Download a Parquet object with the storage service's own authenticated tools, then load its bytes through the native client or an HTTP attached upload.

## Verify the downloaded object

Check the download command's success and the expected object version or checksum before importing. Create a destination table with explicit types compatible with the Parquet schema. Test a small representative file first, especially for timestamps, decimals, nested collections and nullable fields.

```sh
./coordinator client --database data \
  --query 'INSERT INTO imported_people FORMAT parquet' \
  < people.parquet
```

The example assumes `imported_people` already exists. Standard input is read on the client machine. Alternatively, place the file under the server's configured `user_files_path` and use `file()` with an explicit schema.

## Make retries traceable

Record which object and version each batch loaded. If an import response is lost, inspect the destination before repeating it. Downloading an object twice does not make the corresponding inserts idempotent. Validate row counts and representative values after ingestion, then archive or remove the local download according to your own data-handling policy.

See [Parquet mappings](https://coordinatordb.com/docs/reference/formats/parquet/parquet), [file source](https://coordinatordb.com/docs/reference/functions/table-functions/file) and [batch inserts](https://coordinatordb.com/docs/concepts/features/operations/insert/bulkinserts).
