概述
目录
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文件的方法。
- 首先打开每个CSV文件,读出第一项。把它们收藏起来。
- 接下来通过将集合写入虚拟ChoCSVWriter来评估来自所有输入CSV文件的所有可能列。使用WithMaxScanRows()调用扫描所有CSV文件中的列。捕获配置对象(包含所有扫描的CSV列)以供以后使用。
- 最后打开每个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. 如何使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复