c# - 将多个 csv 文件作为单个数据集加载的最佳方法

标签 c# sql-server csv ssis

我有一个文件夹,其中包含许多具有相同格式的 csv 文件(相同的表结构但不同的数据)。我希望将这些 csv 文件中的所有数据作为 SSIS 包中的单个数据集。我当前的解决方案是这样的:在 SQL Server 中创建一个帮助表,并使用 For Each Container 将所有文件加载到表中。然后将此表加载为 SSIS 包中所需的单个数据集。

但是,我非常喜欢一种不依赖于在 SQL Server 中创建此类额外表的方法。我在想可能有更好的方法使用 C# 和脚本组件来做到这一点。有人有什么建议吗?

最佳答案

怎么样:

var allCsv = Directory.EnumerateFiles("Src-Path", ".*csv", SearchOption.TopDirectoryOnly);
string[] header = { File.ReadLines(allCsv.First()).First(l => !string.IsNullOrWhiteSpace(l)) };
var mergedData = allCsv
    .SelectMany(csv => File.ReadLines(csv)
        .SkipWhile(l => string.IsNullOrWhiteSpace(l)).Skip(1)); // skip header of each file
File.WriteAllLines("Dest-Path", header.Concat(mergedData));

请注意,您必须使用 System.Linq 添加;

关于c# - 将多个 csv 文件作为单个数据集加载的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43173319/

相关文章:

sql-server - 如何计算出存储过程返回了多少数据?

mysql - 使用 PHPMyAdmin 导入 CSV 确实很麻烦

javascript - 正则表达式检测带括号的双引号 javascript 对象属性

c# - 适用于 Soap Web 服务的 Azure 中继

c# - C# 如何反转字节数组的顺序?

c# - 带OUT参数的WebMethod,然后在javascript中调用方法

SQL 仅从 varchar 中获取数值

mysql - SQL调优: division between the sum of two columns

arrays - F# CSV - 为每一行从列数据创建一个数组

Python 3.5 CSV.reader 不返回任何行