ETL .NET 来了! .NET 开发人员终于可以轻松处理海量数据

 

目录

ETL.NET

数据处理

如何使用


ETL.NET

ETL.NET 是一个 .NET 的开源框架,可以毫不费力地实现快速的、低内存的和易于维护的数据处理。即使是百万数据也能轻松应对。

ETL.NET 完全用 .NET 编写,可用于多平台使用,并可直接集成到任何应用程序中。

ETL.NET 的工作原理与 SSIS 类似,ETL 过程像 Linq 查询一样。

通过 Nuget 简单安装后,即可使用。

数据处理

ETL.NET 支持从多种数据类型和数据源中读取可写入数据,可以满足各种使用场景。

包括 SQL server,Entity Framework, CSV,Excel, XML, 文件系统, FTP, SFTP, FTPS,zip 压缩包等等。

如何使用

下面是一个使用 ETL.NET 处理数据的场景。

  1. 1. 首先从文件夹中读取所有的 zip 文件。

  2. 2. 解压 zip, 并读取其中的 CSV。

  3. 3. 解析 CSV 内容, 添加的 Person 的集合中。

  4. 4. 去除重复项,并写入到 Sql Server 数据库中。

using System;
using System.Threading.Tasks;
using Paillave.Etl.FileSystem;
using Paillave.Etl.Zip;
using Paillave.Etl.TextFile;
using Paillave.Etl.SqlServer;
using System.Data.SqlClient;
using Paillave.Etl.Core;

namespace SimpleTutorial
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var processRunner = StreamProcessRunner.Create<string>(DefineProcess);
            using (var cnx = new SqlConnection(args[1]))
            {
                cnx.Open();
                var executionOptions = new ExecutionOptions<string>
                {
                    Resolver = new SimpleDependencyResolver().Register(cnx)
                };
                var res = await processRunner.ExecuteAsync(args[0], executionOptions);
                Console.Write(res.Failed ? "Failed" : "Succeeded");
            }
        }
        private static void DefineProcess(ISingleStream<string> contextStream)
        {
            contextStream
                .CrossApplyFolderFiles("列出所有的 zip 文件", "*.zip", true)
                .CrossApplyZipFiles("从 zip 解压出 csv 文件", "*.csv")
                .CrossApplyTextFile("解析 csv ", 
                    FlatFileDefinition.Create(i => new Person
                    {
                        Email = i.ToColumn("email"),
                        FirstName = i.ToColumn("first name"),
                        LastName = i.ToColumn("last name"),
                        DateOfBirth = i.ToDateColumn("date of birth", "yyyy-MM-dd"),
                        Reputation = i.ToNumberColumn<int?>("reputation", ".")
                    }).IsColumnSeparated(','))
                .Distinct("去重", i => i.Email)
                .SqlServerSave("写入数据库", o => o
                    .ToTable("dbo.Person")
                    .SeekOn(p => p.Email)
                    .DoNotSave(p => p.Id))
                .Do("输出到控制台", i => Console.WriteLine(i.Id));
        }
        private class Person
        {
            public int Id { get; set; }
            public string Email { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public DateTime DateOfBirth { get; set; }
            public int? Reputation { get; set; }
        }
    }
}

引用地址 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ETL是指抽取(Extract)、转换(Transform)、加载(Load)的过程,其目的是从不同来源的数据源中抽取所需的数据,对数据进行转换和清洗,最后将数据加载到目标系统中。而.NET是一种广泛使用的软件开发框架,可以用于构建各种类型的应用程序。 当ETL.NET相结合时,.NET开发人员终于可以轻松处理海量数据。在以前,处理海量数据通常需要编写复杂的算法和使用低级的编程语言,但是使用.NET开发ETL工具可以极大地简化这个过程。 首先,.NET提供了许多强大的工具和库,如LINQ(Language Integrated Query),它可以方便地进行数据的查询和操作。开发人员可以使用LINQ从大数据源中提取特定的数据,并对数据进行各种转换和清洗操作,而无需编写复杂的循环和条件语句。 另外,.NET还提供了并行处理的支持,可以将大规模数据处理任务分解成多个小任务,并在多个处理器上并行执行。这样可以大大提高处理数据量的效率,缩短处理时间。 此外,.NET还具有高性能和可扩展性的特点,可以轻松处理海量数据开发人员可以使用.NET开发高效的ETL工具,以满足不同规模和复杂度的数据处理需求。 总而言之,ETL.NET的出现使.NET开发人员可以更轻松处理海量数据。他们可以通过利用.NET的强大功能和性能优势,开发高效的ETL工具,从而提高数据处理的效率和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值