CSV / TSV Output
Export query results as comma-separated values (CSV) or tab-separated values (TSV).
Usage
bash
# CSV (default)
loq "SELECT * FROM data.csv"
loq -o:CSV "SELECT * FROM data.csv"
# TSV
loq -o:TSV "SELECT * FROM data.csv"Output to File
bash
# To file
loq -o:CSV --ofile:output.csv "SELECT * FROM data.csv"
loq -o:TSV --ofile:output.tsv "SELECT * FROM data.csv"
# To stdout (default)
loq -o:CSV "SELECT * FROM data.csv"Output Format
CSV
csv
name,age,city
Alice,32,New York
Bob,28,San FranciscoTSV
tsv
name age city
Alice 32 New York
Bob 28 San FranciscoOptions
Headers
Control header row output:
bash
# With headers (default)
loq -o:CSV "SELECT name, age FROM users.csv"
# Without headers
loq -o:CSV -headers:OFF "SELECT name, age FROM users.csv"Custom Separator
Use any character as separator:
bash
# Pipe-delimited
loq -o:CSV -oSeparator:"|" "SELECT * FROM data.csv"
# Semicolon-delimited (European CSV)
loq -o:CSV -oSeparator:";" "SELECT * FROM data.csv"Output Codepage
Specify output encoding:
bash
# UTF-8 (default)
loq -o:CSV -oCodepage:UTF8 "SELECT * FROM data.csv"
# UTF-16
loq -o:CSV -oCodepage:UTF16 "SELECT * FROM data.csv"
# Windows-1252
loq -o:CSV -oCodepage:1252 "SELECT * FROM data.csv"Quoting Behavior
Values are quoted when they contain:
- The delimiter character (comma for CSV)
- Double quotes
- Newlines
csv
name,description
Widget,"A small, useful item"
Gadget,"Contains ""special"" characters"NULL Handling
NULL values are output as empty fields:
csv
name,email
Alice,alice@example.com
Bob,
Carol,carol@example.comExamples
Basic Export
bash
loq -o:CSV --ofile:users.csv "SELECT * FROM users.csv WHERE active = true"Filtered Export
bash
loq -o:CSV --ofile:errors.csv \
"SELECT timestamp, level, message FROM logs.csv WHERE level = 'error'"Aggregated Export
bash
loq -o:CSV --ofile:summary.csv \
"SELECT category, COUNT(*), SUM(amount)
FROM sales.csv
GROUP BY category"Selected Columns with Aliases
bash
loq -o:CSV --ofile:report.csv \
"SELECT
name AS 'Customer Name',
total AS 'Total Amount',
date AS 'Order Date'
FROM orders.csv"Pipeline to Other Tools
bash
# Pipe to grep
loq -o:CSV "SELECT * FROM logs.csv" | grep error
# Pipe to awk
loq -o:CSV "SELECT name, amount FROM sales.csv" | awk -F',' '{sum += $2} END {print sum}'
# Pipe to sort
loq -o:CSV -headers:OFF "SELECT * FROM data.csv" | sort -t',' -k2 -nCombining with Unix Tools
Count Lines
bash
loq -o:CSV -headers:OFF "SELECT * FROM data.csv WHERE status = 'active'" | wc -lExtract Column
bash
loq -o:CSV -headers:OFF "SELECT name FROM users.csv" | sort | uniqHead/Tail
bash
# First 10 rows (including header)
loq -o:CSV "SELECT * FROM data.csv LIMIT 10"
# Using head
loq -o:CSV "SELECT * FROM data.csv" | head -20Best Practices
Use Appropriate Delimiter
- Comma (
,): Standard, works with most tools - Tab: Better for data with commas in values
- Pipe (
|): Good for data with commas and tabs
Consider Headers
- With headers: For human reading, spreadsheet import
- Without headers: For piping to other tools, appending to files
Handle Special Characters
Data with commas or quotes is automatically escaped:
sql
SELECT 'Value, with comma' AS col1
-- Output: "Value, with comma"Use Aliases for Clean Headers
sql
SELECT
customer_id AS 'Customer ID',
total_amount AS 'Total Amount'
FROM orders.csvSpreadsheet Import
CSV files can be opened directly in:
- Microsoft Excel
- Google Sheets
- LibreOffice Calc
- Numbers
Excel Tips
- Open Excel
- File > Import > CSV
- Select comma delimiter
- Choose column types
Google Sheets Tips
- Open Google Sheets
- File > Import
- Upload CSV
- Select separator type
Troubleshooting
Wrong Delimiter Detected
If spreadsheet doesn't parse correctly:
bash
# Use tab for cleaner import
loq -o:TSV --ofile:data.tsv "SELECT * FROM data.csv"Encoding Issues
For non-ASCII characters:
bash
loq -o:CSV -oCodepage:UTF8 --ofile:data.csv "SELECT * FROM data.csv"Large Files
For very large exports:
bash
# Stream directly to file
loq -o:CSV --ofile:huge.csv "SELECT * FROM huge.csv"