將政府預算資料遷移至 Supabase 並完全公開的工具。
- 保留完整完全相同的資料結構
- 建立 Supabase 資料表
- 完全公開預算資料,訪客可存取
本專案處理以下 8 個 CSV 檔案:
中央政府總預算紀錄 - 工作計劃.csv→central_work_plans中央政府總預算紀錄 - 業務計劃.csv→central_business_plans中央政府總預算紀錄 - 歲入子目列表.csv→central_revenue_subcategories中央政府總預算紀錄 - 歲入細目列表.csv→central_revenue_details
地方預算資料 - 工作計劃.csv→local_work_plans地方預算資料 - 業務計劃.csv→local_business_plans地方預算資料 - 歲入子目.csv→local_revenue_subcategories地方預算資料 - 歲入細目.csv→local_revenue_details
- 在 Supabase 中建立新專案
- 執行
supabase_schema.sql建立資料表結構 - 執行
supabase_rls.sql設定公開存取權限
# 建立虛擬環境
python3 -m venv venv
# 啟動虛擬環境
source venv/bin/activate
# 安裝依賴套件
pip install -r requirements.txt複製環境變數範例檔案:
cp .env.example .env編輯 .env 檔案,填入你的 Supabase 設定:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key# 確保虛擬環境已啟動
source venv/bin/activate
# 執行遷移腳本
python migrate_data.pysupabase_schema.sql- 建立所有資料表和索引supabase_rls.sql- 設定 Row Level Security 為完全公開
migrate_data.py- 主要遷移工具requirements.txt- Python 依賴套件
.env.example- 環境變數範例.env- 實際環境變數(不會提交到版本控制)
所有資料表都包含以下共同欄位:
id- 自動遞增主鍵created_at- 建立時間updated_at- 更新時間
其餘欄位完全對應原始 CSV 檔案的欄位名稱,保持資料結構完整性。
資料設定為完全公開:
- ✅ 任何人都可以讀取所有預算資料
- ❌ 只有 service_role 可以寫入/修改資料
- 🌐 支援匿名存取和已認證使用者存取
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
'https://your-project.supabase.co',
'your-anon-key' // 使用 anon key,不需要 service role key
)
// 查詢中央政府工作計劃
const { data, error } = await supabase
.from('central_work_plans')
.select('*')
.eq('年', 114)
.limit(10)# 查詢地方預算資料
curl "https://your-project.supabase.co/rest/v1/local_business_plans?年=eq.114&limit=10" \
-H "apikey: your-anon-key"執行遷移後,預期的資料筆數:
central_work_plans: ~35,320 筆central_business_plans: ~30,962 筆central_revenue_subcategories: ~33,151 筆central_revenue_details: ~49,286 筆local_work_plans: ~23,869 筆local_business_plans: ~19,812 筆local_revenue_subcategories: ~30,398 筆local_revenue_details: ~43,486 筆
A: 直接執行 python migrate_data.py,腳本會自動清空舊資料並重新匯入。
A: 所有資料表都有 年 欄位,可以用來篩選特定年度。
A: 此工具主要用於一次性遷移,如需定期更新,可以設定排程執行遷移腳本。
A:
- 啟動虛擬環境:
source venv/bin/activate - 退出虛擬環境:
deactivate - 重新建立虛擬環境: 刪除
venv目錄後重新執行python3 -m venv venv - 檢查虛擬環境是否已啟動: 終端提示符前會顯示
(venv)
本專案為開源專案,歡迎貢獻和使用。政府預算資料為公開資料。