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

Databricks非流DLT中如何仅用SQL读取带表头配置的CSV文件

Delta Live Table非流式场景纯SQL读取CSV方案

结论

可以实现。不需要调用Auto Loader、不需要编写Python代码,仅使用SQL即可在非流式DLT场景下读取配置了表头及其他自定义参数的CSV文件。

核心规则

  • 只要在定义DLT数据集时不使用STREAM()函数包裹数据源,就会运行在批处理(非流式)模式,不会触发Auto Loader的流式加载逻辑
  • 所有CSV解析参数(表头、分隔符、转义规则、坏数据处理模式、字符集等)都可以直接在SQL语法的配置项中传入,和其他API读取CSV时的参数能力完全一致

可直接复用的SQL示例

写法1:使用read_files函数(推荐,参数配置更直观)

-- 创建非流式DLT物化视图,读取指定路径下的CSV文件
CREATE OR REFRESH MATERIALIZED VIEW biz_csv_table
AS SELECT *
FROM read_files(
  '/mnt/your_storage_path/csv_data/*.csv', -- 替换为实际CSV文件路径
  format => 'csv',
  header => true, -- 启用表头识别
  delimiter => ',', -- 配置分隔符,可根据实际场景改为\t、|等
  mode => 'PERMISSIVE', -- 配置坏数据处理模式,支持PERMISSIVE/DROPMALFORMED/FAILFAST
  inferSchema => true, -- 自动推断字段类型,也可手动指定schema
  encoding => 'UTF-8' -- 其余自定义参数按需追加即可
)

写法2:传统Spark SQL数据源语法

CREATE OR REFRESH MATERIALIZED VIEW biz_csv_table
USING CSV
OPTIONS (
  path '/mnt/your_storage_path/csv_data/*.csv',
  header 'true',
  delimiter ',',
  mode 'PERMISSIVE',
  inferSchema 'true',
  encoding 'UTF-8'
)

以上两种写法均为纯SQL实现,无Python代码依赖,运行在非流批处理模式,不会调用Auto Loader组件。

内容的提问来源于stack exchange,提问作者OMAR BEN YEDIR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:54:19