1. Getting Started with DuckDB#

1.1. Introduction#

1.2. Learning Objectives#

1.3. What Makes DuckDB Different from Traditional Databases#

1.4. When (and When Not) to Use DuckDB for Spatial Work#

1.4.1. When to Use DuckDB#

1.4.2. When Not to Use DuckDB#

1.5. Installing DuckDB CLI and Running Your First Query#

1.5.1. Windows Installation#

duckdb --version

1.5.2. macOS or Linux Installation#

curl https://install.duckdb.org | sh
duckdb

1.6. Installing the DuckDB Python Client#

1.6.1. Installing DuckDB Using pip#

pip install duckdb

1.6.1.1. Installing uv#

curl -LsSf https://astral.sh/uv/install.sh | sh
pip install uv

1.6.1.2. Basic uv Usage#

# Navigate to your project directory
cd /path/to/your/project

# Create a virtual environment
uv venv

# Create with specific Python version
uv venv --python 3.12

# Activate the environment (varies by OS)
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate
# Install packages
uv pip install jupyterlab leafmap duckdb duckdb-engine jupyter-duckdb jupysql

1.6.2. Installing DuckDB Using Conda#

1.6.2.1. Installing Miniconda on Windows#

curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o .\miniconda.exe
start /wait "" .\miniconda.exe /S
del .\miniconda.exe

1.6.2.2. Installing Miniconda on macOS#

mkdir -p ~/miniconda3
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
mkdir -p ~/miniconda3
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -o ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda init --all

1.6.2.3. Installing Miniconda on Linux#

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda init --all

1.6.2.4. Installing DuckDB in the Conda environment#

conda create -n geo python=3.12
conda activate geo
conda install -c conda-forge python-duckdb duckdb-engine jupysql leafmap

1.6.3. Verifying Installation#

jupyter lab

1.7. Installing Visual Studio Code#

1.7.1. Download and Installation#

1.7.2. Installing VS Code Extensions#

code --install-extension ms-python.python
code --install-extension ms-toolsai.jupyter
code --install-extension RandomFractalsInc.duckdb-sql-tools

1.7.3. Installing DuckDB Extensions#

duckdb

1.8. Using the DuckDB UI#

duckdb -ui

1.9. Installing DBeaver SQL IDE#

1.10. Key Takeaways#

1.11. Exercises#

1.11.1. Exercise 1: Installation Verification#

1.11.2. Exercise 2: Installing and Loading Extensions#

1.11.3. Exercise 3: Python Environment Setup#

1.11.4. Exercise 4: DBeaver SQL Editor Setup#

1.11.5. Exercise 5: Exploring the DuckDB UI#