我是靠谱客的博主 酷炫芹菜,最近开发中收集的这篇文章主要介绍Cinchoo ETL——将不同的CSV文件合并为一个大的CSV文件1. 简介2. 要求3. 如何使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

1. 简介

2. 要求

3. 如何使用

3.1 样本数据

3.2 合并操作


  • 下载 Cinchoo ETL 源码
  • 下载 Cinchoo ETL 二进制文件 (.NET Core)
  • 下载 Cinchoo ETL 二进制文件 (.NET Framework)
  • 工作示例 1(.NET Fiddle)

1. 简介

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

本文讨论了使用Cinchoo ETL框架将不同的CSV文件合并为一个大的CSV文件。使用非常简单,几行代码就可以完成转换。您可以转换大文件,因为转换过程是基于流的,速度非常快且内存占用少。

2. 要求

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

3. 如何使用

3.1 样本数据

让我们从查看以下示例CSV文件开始。假设这些CSV文件很大,带有不同的字段,它们的列数可能会有所不同。

清单 3.1.1 CSV文件 1 (sample1.csv)

col1, col2, col3
val1, val2, val3
val11, val21, val31

清单 3.1.2 CSV文件 2 (sample2.csv)

col1, col3
val4, val5
val41, val51

清单 3.1.3 CSV文件3 (sample3.csv)

col1, col4
val6, val7
val61, val71

成功合并后,预期的CSV文件应如下所示

清单 3.1.4 CSV输出(merge.csv)

col1, col2, col3, col4
val1, val2, val3,
val11, val21, val31,
val4, , val5,
val41, , val51,
val6, , , val7
val61, , , val71

首先要做的是安装ChoETL.JSON/ChoETL.JSON.NETStandard nuget包。为此,请在包管理器控制台中运行以下命令。

.NET Framework

Install-Package ChoETL.JSON

.NET Core

Install-Package ChoETL.JSON.NETStandard

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

using ChoETL;

3.2 合并操作

由于输入文件可能很大,我们需要考虑如何有效地合并它们。这是一种适应合并此类CSV文件的方法。

  1. 首先打开每个CSV文件,读出第一项。把它们收藏起来。
  2. 接下来通过将集合写入虚拟ChoCSVWriter来评估来自所有输入CSV文件的所有可能列。使用WithMaxScanRows()调用扫描所有CSV文件中的列。捕获配置对象(包含所有扫描的CSV列)以供以后使用。
  3. 最后打开每个CSV文件并使用捕获的配置对象将它们写入ChoCSVWriter 

清单 3.2.1 合并 CSV文件

private static void MergeCSVFiles()
{
ChoCSVRecordConfiguration config = null;
List<object> items = new List<object>();
using (var r1 = new ChoCSVReader("sample1.csv").WithFirstLineHeader())
{
using (var r2 = new ChoCSVReader("sample2.csv").WithFirstLineHeader())
{
using (var r3 = new ChoCSVReader("sample3.csv").WithFirstLineHeader())
{
items.Add(r1.First());
items.Add(r2.First());
items.Add(r3.First());
}
}
}
StringBuilder csv = new StringBuilder();
using (var w = new ChoCSVWriter(csv)
.WithFirstLineHeader()
.WithMaxScanRows(5)
.ThrowAndStopOnMissingField(false)
)
{
w.Write(items);
//Capture configuration for later use to merge CSV files
config = w.Configuration;
}
using (var r1 = new ChoCSVReader("sample1.csv").WithFirstLineHeader())
{
using (var r2 = new ChoCSVReader("sample2.csv").WithFirstLineHeader())
{
using (var r3 = new ChoCSVReader("sample3.csv").WithFirstLineHeader())
{
//use the captured configuration object for merging CSV file
using (var w = new ChoCSVWriter(Console.Out, config)
.WithFirstLineHeader()
)
{
w.Write(Enumerable.Concat(r1, r2).Concat(r3));
}
}
}
}
}

Fiddle示例:  https ://dotnetfiddle.net/4L8f0k

https://www.codeproject.com/Tips/5316608/Cinchoo-ETL-Merge-different-CSV-files-into-one-lar

最后

以上就是酷炫芹菜为你收集整理的Cinchoo ETL——将不同的CSV文件合并为一个大的CSV文件1. 简介2. 要求3. 如何使用的全部内容,希望文章能够帮你解决Cinchoo ETL——将不同的CSV文件合并为一个大的CSV文件1. 简介2. 要求3. 如何使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部