RAW
Return raw text output instead of JSON formatting.
Keywords
raw, raw_mode, raw_results
Syntax
rawExamples
Basic Raw Output
sql
create function get_plain_text()
returns text
language sql
as $$select 'Hello, World!'$$;
comment on function get_plain_text() is
'HTTP GET
raw';Response: Hello, World! (plain text, no JSON wrapping)
Raw with Multiple Columns
sql
create function get_user_info()
returns table(name text, email text)
language sql
as $$select name, email from users limit 1$$;
comment on function get_user_info() is
'HTTP GET
raw';Response: JohnDoe john@example.com (values concatenated)
CSV Export
sql
create function export_users_csv()
returns table(id int, name text, email text)
language sql
as $$select id, name, email from users$$;
comment on function export_users_csv() is
'HTTP GET
raw
separator ,
new_line \n
columns
Content-Type: text/csv';Response:
id,name,email
1,John Doe,john@example.com
2,Jane Smith,jane@example.comTab-Separated Values
sql
create function export_tsv()
returns table(col1 text, col2 text, col3 text)
language sql
as $$select * from my_table$$;
comment on function export_tsv() is
'HTTP GET
raw
separator \t
new_line \n
Content-Type: text/tab-separated-values';Pipe-Delimited Format
sql
create function export_data()
returns table(a text, b text, c text)
language sql
as $$...$$;
comment on function export_data() is
'HTTP GET
raw
separator |
new_line \n';Response:
value1|value2|value3
value4|value5|value6Download as File
sql
create function download_report()
returns table(data text)
language sql
as $$...$$;
comment on function download_report() is
'HTTP GET
raw
Content-Type: text/csv
Content-Disposition: attachment; filename="report.csv"';Browser will download the response as a file.
Dynamic CSV Download
Use {param_name} template syntax in headers for dynamic content type and filename:
sql
create function export_data(_type text, _file text)
returns table(id int, name text, email text)
language sql
as $$select id, name, email from users$$;
comment on function export_data(text, text) is
'HTTP GET
raw
separator ,
new_line \n
columns
Content-Type: {_type}
Content-Disposition: attachment; filename={_file}';Request: GET /api/export-data?_type=text/csv&_file=users.csv
Response headers:
Content-Type: text/csv
Content-Disposition: attachment; filename=users.csvResponse body:
id,name,email
1,John Doe,john@example.com
2,Jane Smith,jane@example.comBehavior
- Returns content as plain text instead of JSON
- Multiple columns are concatenated (use
separatorto delimit) - Multiple rows are concatenated (use
new_lineto delimit) - Use with
Content-Typeheader to set appropriate media type
Related
- Comment Annotations Guide - How annotations work
- Configuration Guide - How configuration works
Related Annotations
- SEPARATOR - Set column delimiter
- NEW_LINE - Set row delimiter
- COLUMN_NAMES - Include header row
- Response Headers - Set Content-Type