# Convert Parquet rows to CSV or JSON

Convert a Parquet file by reading it into a typed table or a server `file()` relation, then selecting the desired output format. Decide how nested values and nulls should appear before choosing CSV for a consumer.

For a file already placed under `user_files_path`, an explicit server schema is required:

```sql
SELECT id, name
FROM file('people.parquet', parquet, 'id UInt64, name String')
ORDER BY id
FORMAT csv_with_names;
```

## Write the conversion on the client

Run the SELECT through native `--query` and redirect stdout to a new file. Use `FORMAT json_each_row` instead when the consumer needs one named object per row. Keep explicit selected columns and `ORDER BY` when deterministic output matters.

Parquet's schema does not remove the destination declaration requirement for ordinary `file()` input. Read the type-mapping reference for timestamps, exact decimals, geometry and binary values. A valid conversion can still lose meaning if a downstream CSV tool interprets strings as dates or floating-point numbers.

Check the command status and read a sample with the intended consuming tool. Query result-row and response-byte limits still apply; use verified ranges for a conversion that exceeds one response.

See [file source](https://coordinatordb.com/docs/reference/functions/table-functions/file), [Parquet](https://coordinatordb.com/docs/reference/formats/parquet/parquet) and [native client](https://coordinatordb.com/docs/concepts/features/interfaces/client).
