← back to Unclaimed Property Platform
scripts/fetch_all_ca.sh
32 lines
#!/usr/bin/env bash
# Disk-safe full-California load: fetch each remaining dollar-band ZIP, load it into
# db/ca_unclaimed.sqlite, then DELETE the raw ZIP + CSVs before the next band — so peak
# extra disk stays ~one band (~9GB) instead of ~20GB for the whole unzipped set.
# Band 04 ($500+) is already loaded, so we only fetch 03/02/01.
set -euo pipefail
cd "$(dirname "$0")/.."
SRC="data/ca-source"; BASE="https://claimit.ca.gov/upd-property-records"
mkdir -p "$SRC"
for band in 03_From_100_To_Below_500 02_From_10_To_Below_100 01_From_0_To_Below_10; do
echo "=== $band ==="
df -h . | tail -1 | awk '{print " disk free: "$4}'
echo " downloading $band.zip …"
curl -s -A "Mozilla/5.0" -o "$SRC/$band.zip" "$BASE/$band.zip"
echo " unzipping …"
unzip -o -q "$SRC/$band.zip" -d "$SRC"
rm -f "$SRC/$band.zip" # drop the zip immediately (CSVs are what we load)
echo " loading into DB …"
python3 scripts/load_ca.py $(cd "$SRC" && ls ${band#*_}*.csv 2>/dev/null | tr '\n' ' ')
echo " cleaning raw CSVs …"
rm -f "$SRC"/${band#*_}*.csv # free the ~7GB of CSVs before the next band
echo " done $band; DB now:"; ls -lh db/ca_unclaimed.sqlite | awk '{print " "$5}'
done
echo "=== FULL CALIFORNIA LOAD COMPLETE ==="
python3 - <<'PY'
import sqlite3
c=sqlite3.connect("db/ca_unclaimed.sqlite")
n,d=c.execute("SELECT COUNT(*),SUM(amount) FROM ca_property").fetchone()
print(f"db/ca_unclaimed.sqlite: {n:,} California records · ${d:,.2f} total unclaimed")
PY