Skip to content
Back to skills

Snowflake Hello World

ASecurity

'Create a minimal working Snowflake example with real SQL queries.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 11, 2026
developmenttypescriptpythonsqlnodenodejstestingdatabase

Works with

  • claude code
  • cursor

Security analysis

A100/100

Scanned November 11, 2026

npx -y skills add pauldx/claudifying --skill snowflake-hello-world --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Snowflake Hello World?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Snowflake Hello World
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pauldx-snowflake-hello-world/badge)](https://www.skillsdirectory.com/skills/pauldx-snowflake-hello-world)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: snowflake-hello-world
description: 'Create a minimal working Snowflake example with real SQL queries.

  Use when testing your Snowflake setup, running first queries,

  or learning basic snowflake-sdk and snowflake-connector-python patterns.

  Trigger with phrases like "snowflake hello world", "snowflake example",

  "snowflake quick start", "first snowflake query".

  '
allowed-tools: Read, Write, Edit
version: 1.0.0
license: MIT
tags:
- saas
- data-warehouse
- analytics
- snowflake
compatibility: Designed for Claude Code
---
# Snowflake Hello World

## Overview

Minimal working examples demonstrating core Snowflake operations: connect, query, create objects, load data.

## Prerequisites

- Completed `snowflake-install-auth` setup
- Valid credentials configured in environment
- A warehouse available (e.g., `COMPUTE_WH`)

## Instructions

### Step 1: Connect and Query (Node.js)

```typescript
// hello-snowflake.ts
import snowflake from 'snowflake-sdk';

const connection = snowflake.createConnection({
  account: process.env.SNOWFLAKE_ACCOUNT!,
  username: process.env.SNOWFLAKE_USER!,
  password: process.env.SNOWFLAKE_PASSWORD!,
  warehouse: 'COMPUTE_WH',
  database: 'DEMO_DB',
  schema: 'PUBLIC',
});

connection.connect((err) => {
  if (err) {
    console.error('Connection failed:', err.message);
    process.exit(1);
  }
  console.log('Connected to Snowflake!');

  // Run a simple query
  connection.execute({
    sqlText: `SELECT CURRENT_TIMESTAMP() AS now,
              CURRENT_WAREHOUSE() AS warehouse,
              CURRENT_DATABASE() AS database,
              CURRENT_ROLE() AS role`,
    complete: (err, stmt, rows) => {
      if (err) {
        console.error('Query failed:', err.message);
        return;
      }
      console.log('Query result:', rows);
      connection.destroy((err) => {
        if (err) console.error('Disconnect error:', err.message);
      });
    },
  });
});
```

### Step 2: Connect and Query (Python)

```python
# hello_snowflake.py
import snowflake.connector
import os

conn = snowflake.connector.connect(
    account=os.environ['SNOWFLAKE_ACCOUNT'],
    user=os.environ['SNOWFLAKE_USER'],
    password=os.environ['SNOWFLAKE_PASSWORD'],
    warehouse='COMPUTE_WH',
    database='DEMO_DB',
    schema='PUBLIC',
)

try:
    cursor = conn.cursor()
    cursor.execute("""
        SELECT CURRENT_TIMESTAMP() AS now,
               CURRENT_WAREHOUSE() AS warehouse,
               CURRENT_DATABASE() AS database,
               CURRENT_ROLE() AS role
    """)
    for row in cursor:
        print(f"Time: {row[0]}, Warehouse: {row[1]}, DB: {row[2]}, Role: {row[3]}")
finally:
    conn.close()
```

### Step 3: Create Database Objects

```sql
-- Run via connection.execute() or snowflake worksheet
CREATE DATABASE IF NOT EXISTS DEMO_DB;
CREATE SCHEMA IF NOT EXISTS DEMO_DB.MY_SCHEMA;

CREATE OR REPLACE TABLE DEMO_DB.MY_SCHEMA.USERS (
    id INTEGER AUTOINCREMENT,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255),
    created_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);

INSERT INTO DEMO_DB.MY_SCHEMA.USERS (name, email)
VALUES ('Alice', 'alice@example.com'),
       ('Bob', 'bob@example.com');

SELECT * FROM DEMO_DB.MY_SCHEMA.USERS;
```

### Step 4: Parameterized Queries (Node.js)

```typescript
// Insert with bind parameters — prevents SQL injection
connection.execute({
  sqlText: 'INSERT INTO DEMO_DB.MY_SCHEMA.USERS (name, email) VALUES (?, ?)',
  binds: ['Charlie', 'charlie@example.com'],
  complete: (err, stmt, rows) => {
    if (err) {
      console.error('Insert failed:', err.message);
      return;
    }
    console.log('Inserted rows:', stmt.getNumUpdatedRows());
  },
});

// Fetch results with streaming for large datasets
connection.execute({
  sqlText: 'SELECT * FROM DEMO_DB.MY_SCHEMA.USERS ORDER BY created_at DESC',
  streamResult: true,
  complete: (err, stmt) => {
    if (err) { console.error(err.message); return; }
    const stream = stmt.streamRows();
    stream.on('data', (row) => console.log('Row:', row));
    stream.on('end', () => console.log('All rows fetched'));
    stream.on('error', (err) => console.error('Stream error:', err));
  },
});
```

### Step 5: Parameterized Queries (Python)

```python
# Insert with bind parameters
cursor.execute(
    "INSERT INTO DEMO_DB.MY_SCHEMA.USERS (name, email) VALUES (%s, %s)",
    ('Charlie', 'charlie@example.com')
)
print(f"Inserted {cursor.rowcount} row(s)")

# Fetch all results
cursor.execute("SELECT * FROM DEMO_DB.MY_SCHEMA.USERS ORDER BY created_at DESC")
results = cursor.fetchall()
for row in results:
    print(f"ID: {row[0]}, Name: {row[1]}, Email: {row[2]}")

# Fetch as pandas DataFrame
import pandas as pd
cursor.execute("SELECT * FROM DEMO_DB.MY_SCHEMA.USERS")
df = cursor.fetch_pandas_all()
print(df)
```

## Output

```
Connected to Snowflake!
Query result: [{ NOW: '2026-03-22T...', WAREHOUSE: 'COMPUTE_WH', DATABASE: 'DEMO_DB', ROLE: 'SYSADMIN' }]
Inserted 1 row(s)
Row: { ID: 1, NAME: 'Alice', EMAIL: 'alice@example.com', CREATED_AT: '...' }
```

## Error Handling

| Error | Cause | Solution |
|-------|-------|----------|
| `002003 (42S02): Object does not exist` | Table/DB not created yet | Run CREATE statements first |
| `000606: No active warehouse` | No warehouse set or suspended | `USE WAREHOUSE COMPUTE_WH;` or set in connection |
| `001003: SQL compilation error: syntax error` | Bad SQL syntax | Check SQL against Snowflake SQL reference |
| `100035: No space left on device` | Large result set, local disk full | Use `streamResult: true` or limit results |

## Resources

- [Executing Statements (Node.js)](https://docs.snowflake.com/en/developer-guide/node-js/nodejs-driver-execute)
- [Using the Python Connector](https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-example)
- [Snowflake SQL Reference](https://docs.snowflake.com/en/sql-reference)

## Next Steps

Proceed to `snowflake-local-dev-loop` for development workflow setup.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in development →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.