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

Power Query处理含多余#(cr)#(lf)的Oracle导出文件转表异常求助

Oracle导出文本的Power Query换行修复方案

问题背景

  • Oracle导出的管道分隔文本中,部分日期时间字段含多余#(cr)#(lf),导致Power Query导入失败
  • 无法从数据源端解决问题,只能在Power Query内处理
  • 自行编写的脚本先移除所有换行再重新添加,但点击「To Table」按钮时,Power Query无法正确识别所有换行,部分行被合并
  • 若将转表前的文本复制到Notepad++保存后重新导入,转表操作则完全正常

原脚本(不含转表步骤)

let
    Source = Lines.FromBinary(File.Contents("H:\My Documents\test.csv")),
    Listtotext = Text.Combine(Source),
    ReplacedValue2 = Text.Replace((Listtotext),"#(cr)#(lf)", ""),
    SplitText = Text.Split(ReplacedValue2 ," "),
    ListNonBlankValues = List.Select(SplitText,each _<> ""),
    TextJoinList2 = Text.Combine(ListNonBlankValues," "),
    ReplacedValue3 = Text.Replace((TextJoinList2),"|Is Final?", "|Is Final?#(cr)#(lf)"),
    ReplacedValue4 = Text.Replace((ReplacedValue3),"|Y|", "|Y|#(cr)#(lf)"),
    ReplacedValue5 = Text.Replace((ReplacedValue4), "#(cr)#(lf) ", "#(cr)#(lf)")
in
    ReplacedValue5

问题原因

原脚本最终返回的是单个文本值,而「To Table」按钮默认针对列表格式的行数据进行处理。直接对文本执行转表操作时,Power Query的换行识别逻辑存在偏差;而复制到外部文件再导入时,Lines.FromBinary会自动将文本按换行拆分成标准的行列表,因此转表正常。

修正后的脚本

let
    Source = Lines.FromBinary(File.Contents("H:\My Documents\test.csv")),
    Listtotext = Text.Combine(Source),
    ReplacedValue2 = Text.Replace(Listtotext,"#(cr)#(lf)", ""),
    SplitText = Text.Split(ReplacedValue2 ," "),
    ListNonBlankValues = List.Select(SplitText,each _ <> ""),
    TextJoinList2 = Text.Combine(ListNonBlankValues," "),
    ReplacedValue3 = Text.Replace(TextJoinList2,"|Is Final?", "|Is Final?#(cr)#(lf)"),
    ReplacedValue4 = Text.Replace(ReplacedValue3,"|Y|", "|Y|#(cr)#(lf)"),
    ReplacedValue5 = Text.Replace(ReplacedValue4, "#(cr)#(lf) ", "#(cr)#(lf)"),
    // 将处理后的文本按换行拆分为行列表
    SplitToLines = Text.Split(ReplacedValue5, "#(cr)#(lf)"),
    // 过滤空行,避免转表异常
    FilteredLines = List.Select(SplitToLines, each _ <> ""),
    // 直接转表,指定管道符为分隔符
    ToTable = Table.FromList(FilteredLines, Splitter.SplitTextByDelimiter("|"), null, null, ExtraValues.Error)
in
    ToTable

关键修改说明

  • 新增SplitToLines步骤:手动将处理后的文本按#(cr)#(lf)拆分成列表,让Power Query明确识别每行数据
  • 新增FilteredLines步骤:过滤拆分后可能出现的空行,避免转表时产生无效行
  • 用Table.FromList替代手动点击「To Table」:直接指定分隔符为管道符,同时通过ExtraValues.Error配置异常值处理,便于排查数据问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:23:17