【问题标题】:Dataweave, How to remove the extra \n when generating a csv?Dataweave,如何在生成 csv 时删除额外的 \n?
【发布时间】:2020-06-17 21:36:29
【问题描述】:

我正在生成要发送到 SFTP 位置的 csv 文件。 该文件按预期创建,除了额外的 \n 有什么办法可以去掉吗?

输入:

[
    {
        "reference": "TPL",
        "newId": "07223455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TIN",
        "newId": "07123455",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05550910",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "THW",
        "newId": "05533112",
        "dateCreated": "020200509",
        "error": "000"
    },
    {
        "reference": "TSB",
        "newId": "05567865",
        "dateCreated": "020200509",
        "error": "000"
    }
]

数据编织:

%dw 2.0
output application/csv header = false
import * from dw::core::Strings
---
payload filter ( $.error == '000' ) map (
    values:
       rightPad($.reference, 16)
    ++ rightPad('0', 1)
    ++ rightPad($.newId, 9)
    ++ rightPad('0', 1)
    ++ rightPad($.dateCreated,9)
    ++ rightPad("", 16)
    ++ rightPad("P",1)
    ++ rightPad("", 103)
 ) 

结果:

TPL             07223455  020200509                 P                                                                                                       
TIN             07123455  020200509                 P                                                                                                       
THW             05550910  020200509                 P                                                                                                       
THW             05533112  020200509                 P                                                                                                       
TSB             05567865  020200709                 P                                                                                                       
TSB             05533112  020200509                 P                                                                                                       

我尝试删除最后一行

result[0 to sizeOf(result) -1]

但 \n 默认添加在每行的末尾

【问题讨论】:

  • 你能提供输入数据吗?
  • 您是否遇到目标系统不喜欢尾行的问题?
  • 我不确定您生成的是 CSV,我认为它看起来更像是一个平面文件或更好的固定宽度。当我有一点额外的时间时,我会为你做的。也许你需要重新考虑你的输出媒体类型
  • @MichaelJones 是的,目标系统无法读取文件

标签: mule dataweave mulesoft


【解决方案1】:

你总是可以这样做的:

%dw 2.0
output text/plain
import * from dw::core::Strings
---
write(payload filter ( $.error == '000' ) map (
    values:
       rightPad($.reference, 16)
    ++ rightPad('0', 1)
    ++ rightPad($.newId, 9)
    ++ rightPad('0', 1)
    ++ rightPad($.dateCreated,9)
    ++ rightPad("", 16)
    ++ rightPad("P",1)
    ++ rightPad("", 103)
 ), "application/csv", { header: false})[0 to -2]

编辑以包括关闭标题。

【讨论】:

    【解决方案2】:

    你可能想试试这个:

    %dw 2.0
    output application/flatfile schemaPath="schema.ffd"
    var data = [
        {
            "reference": "TPL",
            "newId": "07223455",
            "dateCreated": "020200509",
            "error": "000"
        },
        {
            "reference": "TIN",
            "newId": "07123455",
            "dateCreated": "020200509",
            "error": "000"
        },
        {
            "reference": "THW",
            "newId": "05550910",
            "dateCreated": "020200509",
            "error": "000"
        },
        {
            "reference": "THW",
            "newId": "05533112",
            "dateCreated": "020200509",
            "error": "000"
        },
        {
            "reference": "TSB",
            "newId": "05567865",
            "dateCreated": "020200509",
            "error": "000"
        }
    ]
    ---
    data map {($ - "error"), p: "P"}
    

    你必须在你的类路径下创建一个包含架构的文件(我在src/main/resources下创建它),我称之为schema.ffd,你可以在下面看到它的内容:

    form: FIXEDWIDTH
    name: my-flat-file
    values:
    - { name: 'reference', type: String, length: 16 }
    - { name: 'newId', type: String, length: 10 }
    - { name: 'dateCreated', type: String, length: 25 }
    - { name: 'p', type: String, length: 104 }
    

    我得到以下输出:

    TPL             07223455  020200509                P                                                                                                       
    TIN             07123455  020200509                P                                                                                                       
    THW             05550910  020200509                P                                                                                                       
    THW             05533112  020200509                P                                                                                                       
    TSB             05567865  020200509                P                                                                                                       
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2021-12-14
      • 2011-09-16
      • 2021-07-31
      • 2010-10-23
      • 2014-01-13
      相关资源
      最近更新 更多