name: snowflake description: "Query and manage Snowflake data warehouses -- run SQL, manage warehouses, inspect schemas, and control access." metadata: {"openclaw": {"emoji": "❄️", "requires": {"bins": ["snow"]}, "tags": ["database", "snowflake", "sql", "cloud", "data", "warehouse"], "secrets": [{"env_var": "SNOWFLAKE_ACCOUNT", "label": "Snowflake Account", "placeholder": "org-account"}, {"env_var": "SNOWFLAKE_USER", "label": "Snowflake User", "placeholder": "username"}, {"env_var": "SNOWFLAKE_PASSWORD", "label": "Snowflake Password", "placeholder": "password"}, {"env_var": "SNOWFLAKE_WAREHOUSE", "label": "Snowflake Warehouse", "placeholder": "COMPUTE_WH", "optional": true}, {"env_var": "SNOWFLAKE_DATABASE", "label": "Snowflake Database", "placeholder": "MY_DB", "optional": true}, {"env_var": "SNOWFLAKE_SCHEMA", "label": "Snowflake Schema", "placeholder": "PUBLIC", "optional": true}]}}
Snowflake
You help query and manage Snowflake data warehouses using the snow (Snowflake CLI) or SQL commands.
Use this when the user asks about Snowflake tables, queries, warehouses, or administration.
Authentication
Configure the Snowflake CLI:
snow connection add
Or set environment variables: SNOWFLAKE_ACCOUNT, SNOWFLAKE_USER, SNOWFLAKE_PASSWORD, SNOWFLAKE_WAREHOUSE, SNOWFLAKE_DATABASE, SNOWFLAKE_SCHEMA.
Commands
Execute SQL
snow sql -q "SELECT * FROM <database>.<schema>.<table> LIMIT 10"
List databases
snow sql -q "SHOW DATABASES"
List schemas
snow sql -q "SHOW SCHEMAS IN DATABASE <database>"
List tables
snow sql -q "SHOW TABLES IN <database>.<schema>"
Describe a table
snow sql -q "DESCRIBE TABLE <database>.<schema>.<table>"
Row count
snow sql -q "SELECT COUNT(*) FROM <database>.<schema>.<table>"
Warehouse management
List warehouses
snow sql -q "SHOW WAREHOUSES"
Resume a warehouse
snow sql -q "ALTER WAREHOUSE <warehouse> RESUME"
Suspend a warehouse
snow sql -q "ALTER WAREHOUSE <warehouse> SUSPEND"
Resize a warehouse
snow sql -q "ALTER WAREHOUSE <warehouse> SET WAREHOUSE_SIZE = 'MEDIUM'"
Query history
snow sql -q "SELECT query_id, query_text, execution_status, total_elapsed_time/1000 AS seconds FROM TABLE(information_schema.query_history(dateadd('hours', -24, current_timestamp()), current_timestamp())) ORDER BY start_time DESC LIMIT 20"
Storage usage
snow sql -q "SELECT table_catalog, table_schema, table_name, row_count, bytes/1024/1024 AS mb FROM information_schema.tables WHERE table_schema NOT IN ('INFORMATION_SCHEMA') ORDER BY bytes DESC NULLS LAST LIMIT 20"
Load data from stage
snow sql -q "COPY INTO <table> FROM @<stage>/<path> FILE_FORMAT = (TYPE = 'CSV' SKIP_HEADER = 1)"
Create a file format
snow sql -q "CREATE FILE FORMAT IF NOT EXISTS my_csv_format TYPE = 'CSV' FIELD_DELIMITER = ',' SKIP_HEADER = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '\"'"
Best Practices
- Always set
AUTO_SUSPENDon warehouses to avoid idle costs - Use appropriate warehouse sizes -- start small, scale up as needed
- Prefer
TRANSIENTtables for staging/temporary data - Use clustering keys on large tables filtered by specific columns
- Leverage Time Travel for recovering data (
AT/BEFOREclauses) - Use roles and grants for access control, not individual user permissions
- Monitor costs via
SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY