Cinchoo ETL - 快速入门:将 CSV 转换为 JSON 文件

一、简介

ChoETL是一个用于 .NET 的开源 ETL(提取、转换和加载)框架。它是一个基于代码的库,用于在 .NET 环境中从多个来源提取数据、转换并加载到自己的数据仓库中。可以立即在数据仓库中获取数据。

使用Cinchoo ETL框架将 CSV 文件转换为 JSON 格式文件非常简单,几行代码就可以完成转换。而且可以转换大文件,因为转换过程是基于流的,速度非常快且内存占用少。

2. 要求

该框架库是使用 .NET 4.5 / .NET Core 3.x 框架用 C# 编写的。

3. 如何使用

3.1 样本数据

先来看一个转换以下CSV文件的简单示例。此示例 CSV 包含具有不同格式的值的所有可能组合。

示例 CSV 文件 (emp.csv)

FirstName,LastName,Street,City,State,Zip 
John,Doe,120 jefferson st.,Riverside, NJ, 08075 
Jack,McGinnis,220 hobo Av.,Phila, PA,09119 
"John ""Da Man""",Repici,120 Jefferson St.,Riverside, NJ,08075 
Stephen,Tyler,"7452 Terrace ""At the Plaza"" road",SomeTown,SD, 91234 
,Blankman,,SomeTown, SD, 00298 
"Joan ""the bone"", Anne",Jet,"9th, at Terrace plc",Desert City,CO,00123

预期的 JSON 文件将是 ( emp.json ):

[
  {
    "FirstName": "John",
    "LastName": "Doe",
    "Street": "120 jefferson st.",
    "City": "Riverside",
    "State": "NJ",
    "Zip": "08075"
  },
  {
    "FirstName": "Jack",
    "LastName": "McGinnis",
    "Street": "220 hobo Av.",
    "City": "Phila",
    "State": "PA",
    "Zip": "09119"
  },
  {
    "FirstName": "John \"Da Man\"",
    "LastName": "Repici",
    "Street": "120 Jefferson St.",
    "City": "Riverside",
    "State": "NJ",
    "Zip": "08075"
  },
  {
    "FirstName": "Stephen",
    "LastName": "Tyler",
    "Street": "7452 Terrace \"At the Plaza\" road",
    "City": "SomeTown",
    "State": "SD",
    "Zip": "91234"
  },
  {
    "FirstName": null,
    "LastName": "Blankman",
    "Street": null,
    "City": "SomeTown",
    "State": "SD",
    "Zip": "00298"
  },
  {
    "FirstName": "Joan \"the bone\", Anne",
    "LastName": "Jet",
    "Street": "9th, at Terrace plc",
    "City": "Desert City",
    "State": "CO",
    "Zip": "00123"
  }
]

3.2 安装库

接下来,安装ChoETL.JSON / ChoETL.JSON.NETStandardnuget 包。在包管理器控制台中运行以下命令。

.NET 标准框架

Install-Package ChoETL.JSON

.NET 核心

Install-Package ChoETL.JSON.NETStandard

现在将ChoETL命名空间添加到程序中。

using ChoETL;

3.3 快速转换

使用该库将 CSV 文件转换为 JSON 格式的文件,只需几行代码即可完成,速度快、基于流且占用内存少。

快速 CSV 到 JSON 文件转换

private static void QuickConversion()
{
    using (var r = new ChoCSVReader("emp.csv")
           .WithFirstLineHeader()
           .MayHaveQuotedFields()
           )
    {
        using (var w = new ChoJSONWriter(Console.Out)
               .UseJsonSerialization()
              )
            w.Write(r);
    }
}

创建一个ChoJSONWriter用于生成 JSON ( emp.json ) 文件的实例。然后创建一个ChoCSVReader对象实例来读取emp.csv文件。由于 CSV 带有一些带引号的字段,因此添加MayHaveQuotedFields(). 最后调用' Write'方法JSONWriter将对象写入输出文件。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wouderw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值