CSV and TSV
This example loads a client-side CSV file with named columns, then exports the rows as escaped tab-separated text. Start the server and run the commands where ./coordinator is available.
Create, import and inspect
Use a fresh destination table for this example:
printf 'id,name\n1,Ada\n2,Grace\n' > people.csv
./coordinator client --database data --query "CREATE TABLE people(id UInt64,name String)" > /dev/null
./coordinator client --database data --query "INSERT INTO people FROM INFILE 'people.csv' FORMAT csv_with_names" > /dev/null
./coordinator client --database data --query "SELECT * FROM people ORDER BY id FORMAT tab_separated"1 Ada
2 GraceHeaders and separators
CSV names headers match target columns by default. csv_with_names_and_types adds a type header. Plain csv is positional, so its field order must match the selected destination columns.
Use SETTINGS csv_separator=';' for a different delimiter, before the INSERT FORMAT clause. Quoted CSV fields can contain delimiters and newlines; tab_separated instead uses escapes for control characters.
Several files and compression
INFILE infers decompression from recognized suffixes such as .gz and .zst. Each matched file is decoded separately, preserving its own header. A malformed file cancels the whole INSERT.
See CSV and TabSeparated for NULL markers, quoting, escapes and settings.