Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1.2 KiB
MySQL
Arguments use ? placeholders.
Name the parameters by adding comments before the statement:
-- ? name1 (text)
-- ? name2 (int) = 0
SELECT * FROM users WHERE name = ? AND age > ?;
Receiving an S3Object as a script parameter
Declare the arg with type (s3object). Windmill renders an S3 file picker for
it, downloads the file, and binds it as JSON text — Parquet/CSV files are
decoded server-side into a JSON array of records, JSON/JSONL pass through.
Consume with JSON_TABLE:
-- ? file (s3object)
SELECT id, name
FROM JSON_TABLE(?, '$[*]'
COLUMNS (id INT PATH '$.id', name VARCHAR(200) PATH '$.name')
) AS r;
Streaming query results to S3
Add a -- s3 directive at the top of the script to stream the result set to S3
instead of returning rows. Windmill writes the file and returns its S3Object
as the script result.
-- s3 prefix=exports/users format=parquet
SELECT id, name FROM users;
All keys are optional: prefix (object key prefix), storage (named storage —
omit to use the workspace default), format (json (default), parquet, or
csv). Use this for large result sets — rows stream directly to S3 instead of
being buffered as the script return value.