【问题标题】:Handling data containing comma in a CSV file处理 CSV 文件中包含逗号的数据
【发布时间】:2020-10-05 05:12:33
【问题描述】:

我有一个 CSV 文件,我正尝试从 Mosaic Decisions 中的 Amazon S3 读取该文件。该文件包含一个地址列,其中数据本身包含一个逗号

文件中的示例数据如下所示:

Address
sl,name,address
1,Ratan Kumar,FlatNo 122,Mumbai,Maharashtra

在这种情况下,address 字段被分成 3 列作为地址,Missing_header_0,Missing_header_1,数据被读取为

sl,name,address,Missing_header_0, Missing_header_1
1,Ratan Kumar,FlatNo 122,Mumbai,Maharashtra

这会破坏实际数据并覆盖下一列数据 我们怎样才能避免这种情况?

【问题讨论】:

  • 检查将分隔符更改为某些特殊字符的可能性或在使用 Mosaic Decisions 读取文件之前,首先使用一些脚本对其进行预处理,然后将 , 替换为其他字符
  • @anuragal 需要预处理或替换数据的逗号,在 Mosaic Decisions 中,这是在读取数据时通过配置读取器节点来处理的。请参阅我的答案以获得更清晰的信息

标签: csv amazon-s3 data-handling mosaic-decisions


【解决方案1】:

为了避免这种情况,

  1. 打开 Reader 节点配置
  2. 在配置选项卡中的引用文本框中传递单引号 (') 或双引号 (")

Mosaic Decisions 的这一功能允许将每个字段中的数据用引号括起来。

这将产生预期的结果。

【讨论】:

    【解决方案2】:

    包含分隔符的字段应该用双引号引起来:

    sl,name,address
    1,Ratan Kumar,"FlatNo 122,Mumbai,Maharashtra"
    

    如果您无法控制此文件的创建,您可以联系创建者并要求修复格式错误的 csv 文件,或者编写一些自定义代码/脚本来解析前 2 个字段并将该行的其余部分视为第三个字段(如果地址字段确实是最后一个字段)。

    【讨论】:

    • 你的答案是对的,但我想知道如何在 Mosaic Decisions 中做到这一点,因为我正在使用它来设计我的数据管道。
    • @VRuvesh 好的 - 我以为您正在尝试读取 Mosaic Decisions 中的(预先存在且格式错误的)数据(或者您可能这样做,并且文件已经包含那些引用的字段:)。
    猜你喜欢
    • 2016-12-14
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2017-09-25
    • 2011-03-09
    • 2018-11-26
    相关资源
    最近更新 更多