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

如何删除Delta表中的<0xfeff>(BOM)字符?

在Azure Databricks中用SQL清理Delta表的BOM字符

完全可以用SQL直接处理Delta表中的BOM字符(<0xfeff>),以下是具体操作步骤:

  • 第一步:验证BOM字符存在
    先通过SQL查询确认哪些记录包含BOM字符。BOM字符U+FEFF对应的十进制ASCII码是65279,用CHAR(65279)来匹配:

    SELECT * 
    FROM your_delta_table 
    WHERE target_column LIKE CONCAT('%', CHAR(65279), '%');
    

    把your_delta_table和target_column替换成你的表名和目标字段名。

  • 第二步:清理BOM字符
    有两种常见方式:

    1. 直接更新原表(Delta表支持ACID事务,可安全执行):

      UPDATE your_delta_table 
      SET target_column = REPLACE(target_column, CHAR(65279), '')
      WHERE target_column LIKE CONCAT('%', CHAR(65279), '%');
      

      若多个字段存在BOM,可在SET后追加多个字段的替换逻辑,比如col1 = REPLACE(col1, CHAR(65279), ''), col2 = REPLACE(col2, CHAR(65279), '')。

    2. 创建清理后的新表(适合需要保留原数据备份的场景):

      CREATE OR REPLACE TABLE cleaned_delta_table 
      AS 
      SELECT 
        REPLACE(col1, CHAR(65279), '') AS col1,
        REPLACE(col2, CHAR(65279), '') AS col2,
        -- 其他字段直接保留,无需处理
        col3, col4
      FROM your_delta_table;
      
  • 注意事项

    • 如果不确定哪些字段包含BOM,可遍历所有字符串类型字段逐一排查;
    • 执行更新前建议先备份原表,避免操作失误导致数据丢失;
    • 若BOM字符仅出现在字段开头,LTRIM(target_column, CHAR(65279))也可生效,但REPLACE能覆盖字段中任意位置的BOM。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:01:05