mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-20 16:02:19 +00:00
85a05765e2
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
43 lines
1.2 KiB
Markdown
43 lines
1.2 KiB
Markdown
# MySQL
|
|
|
|
Arguments use `?` placeholders.
|
|
|
|
Name the parameters by adding comments before the statement:
|
|
|
|
```sql
|
|
-- ? 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`:
|
|
|
|
```sql
|
|
-- ? 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.
|
|
|
|
```sql
|
|
-- 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.
|