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

将PHP解码解压二进制文件逻辑迁移至Power Query遇GZip错误求助

解决Power Query中Base64解码+GZip解压报错的方案

正确的M代码步骤

假设从MySQL导入的表名为MySQL_Data,存储Base64编码字符串的字段为EncodedData:

  1. 添加自定义列完成Base64解码:
= Table.AddColumn(MySQL_Data, "DecodedBinary", each Binary.FromText([EncodedData], BinaryEncoding.Base64))
  1. 添加自定义列完成GZip解压:
= Table.AddColumn(PreviousStepName, "UncompressedXLSX", each Binary.Decompress([DecodedBinary], Compression.GZip))
  1. 加载解压后的Excel文件内容:
= Table.AddColumn(PreviousStepName, "XLSXContent", each Excel.Workbook([UncompressedXLSX]))

关键排查点

  • 验证GZip幻数:对解码后的二进制取前2个字节,检查是否为0x1F8B(GZip标准起始标识)。用以下代码查看:
= Table.AddColumn(DecodedStep, "GZipHeader", each Binary.ToList(Binary.Range([DecodedBinary], 0, 2)))

如果结果不是[31, 139],说明Base64解码环节出错——要么原始字段不是Base64字符串,要么编码格式不匹配。

  • 核对处理顺序:确认PHP脚本的逻辑是GZip压缩 → Base64编码,Power Query必须严格按Base64解码 → GZip解压的反向顺序操作,顺序颠倒会直接触发幻数错误。
  • 检查MySQL字段类型:如果MySQL中存储的是原生二进制字节流(而非Base64字符串),直接跳过Base64解码步骤,对原始二进制字段执行Binary.Decompress即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:47:09