You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks SQL中SQL脚本在DBFS的存储位置及批量下载方法

Databricks SQL脚本批量导出与Git版本管理方案

编程批量下载实现方式

可以通过Databricks官方开放的工作区API实现批量导出,无需手动逐个下载,具体逻辑如下:

  • Databricks中所有保存的SQL脚本都属于工作区资产,可通过/api/2.0/workspace系列接口进行读取和导出
  • 操作前需提前生成具备工作区读取权限的个人访问令牌(PAT),并确认你要导出的SQL脚本在工作区中的存储路径
  • 导出的SQL源码为纯文本格式,可直接存入Git仓库进行版本管理

关于DBFS存储路径说明

Databricks SQL脚本默认存储在工作区内部的元数据存储中,没有对外暴露可直接访问的DBFS路径,无法通过挂载DBFS、直接读DBFS文件的方式获取SQL脚本内容。

Python实现批量导出示例

以下示例可直接使用,按需修改配置项即可:

import requests
import os

# 自定义配置项
DATABRICKS_INSTANCE = "https://<你的Databricks工作区域名>"
PERSONAL_ACCESS_TOKEN = "<你的PAT令牌>"
LOCAL_SAVE_PATH = "./databricks_sql_backup"
WORKSPACE_SQL_DIR = "/Workspace/Queries" # 替换为你的SQL脚本在工作区中的父目录

# 初始化本地存储目录
os.makedirs(LOCAL_SAVE_PATH, exist_ok=True)
req_headers = {"Authorization": f"Bearer {PERSONAL_ACCESS_TOKEN}"}

def export_sql_from_dir(workspace_dir: str):
    # 调用接口遍历当前目录下的所有资产
    list_resp = requests.get(
        url=f"{DATABRICKS_INSTANCE}/api/2.0/workspace/list",
        headers=req_headers,
        params={"path": workspace_dir}
    )
    list_resp.raise_for_status()
    assets = list_resp.json().get("objects", [])

    for asset in assets:
        asset_type = asset.get("object_type")
        asset_path = asset.get("path")
        # 递归处理子目录
        if asset_type == "DIRECTORY":
            export_sql_from_dir(asset_path)
        # 导出SQL类型的资产
        elif asset_type == "SQL":
            export_resp = requests.get(
                url=f"{DATABRICKS_INSTANCE}/api/2.0/workspace/export",
                headers=req_headers,
                params={"path": asset_path, "format": "SOURCE"}
            )
            export_resp.raise_for_status()
            # 生成本地存储文件名,需要保留原目录层级可自行调整逻辑
            file_name = asset_path.split("/")[-1] + ".sql"
            with open(os.path.join(LOCAL_SAVE_PATH, file_name), "w", encoding="utf-8") as f:
                f.write(export_resp.content.decode("utf-8"))

if __name__ == "__main__":
    export_sql_from_dir(WORKSPACE_SQL_DIR)

运行脚本后所有SQL文件会导出到LOCAL_SAVE_PATH指定的目录,你可以直接在该目录执行Git初始化、提交推送操作即可完成版本管理。

内容的提问来源于stack exchange,提问作者Amey Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:36:04