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

Azure Databricks中Spark SQL COPY INTO无法加载CSV数据问题求助

问题原因

  • COPY INTO默认具备幂等性机制,会将所有已成功加载的文件记录存在表对应的元数据目录中,重复执行时自动跳过这些文件。你此前成功加载过该DimAccount.csv文件,系统已将其标记为已处理,所以再次执行返回0行,这是核心诱因。
  • 当前语句的配置和你可正常运行的Python读取逻辑不对齐:缺少enforceSchema参数,且SELECT子句未包含目标表中的corrupt列,可能导致列匹配校验不通过,数据被静默过滤。

解决方法

使用下方调整后的SQL语句即可,核心新增了强制加载参数,对齐了所有配置项:

use work_db;

truncate table dim_account;

copy into dim_account
  from (
    select 
      AccountKey, 
      ParentAccountKey, 
      AccountCodeAlternateKey, 
      ParentAccountCodeAlternateKey,
      AccountDescription, 
      AccountType, 
      Operator, 
      CustomMembers, 
      ValueType, 
      CustomMemberOptions,
      corrupt
    from 'dbfs:/mnt/csv_source'
  )
  FILEFORMAT = csv
  FILES = ('DimAccount.csv')
  FORMAT_OPTIONS(
    'header'='true',
    'columnNameOfCorruptRecord'='corrupt',
    'enforceSchema'='true',
    'sep'=','
  )
  COPY_OPTIONS('force'='true')
;

-- 验证加载结果
select count(*) as total_rows, count(corrupt) as corrupt_rows from dim_account;

注意事项

  • 日常增量加载新文件时不需要加force参数,即可自动跳过已加载的旧文件,完全符合你批量加载的业务需求。
  • 如果需要清空COPY INTO的加载历史,重建目标表即可。
  • 如果查询结果中corrupt_rows大于0,说明存在格式不符合要求的行,直接查询corrupt字段即可排查具体异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:45:03