如何使用.NET Core将镶木地板文件转换为CSV?

时间:2020-05-29 21:09:14

标签: c# csv .net-core parquet

我有一个实木复合地板文件,并且试图将其转换为CSV文件,似乎大多数建议使用Spark,但是我需要使用C#来完成此任务,特别是我需要使用.NET Core 3.0。

这很棘手,因为镶木地板是柱状数据,这使得转换为CSV变得烦人...

我曾尝试将其加载到数据表中,但我不喜欢该解决方案,因为我需要整个文件存储在内存中,而且某种程度上丢失了某些记录。

我正在使用parquet.net,但可以使用任何其他在.net core / standard上运行的Parquet库

谢谢。

2 个答案:

答案 0 :(得分:1)

我还没有试过,但是我想知道您是否可以利用/滥用Microsoft Spark SQL库以使您受益。

DataFrameReader.Parquet(String [])

https://docs.microsoft.com/en-us/dotnet/api/microsoft.spark.sql.dataframereader.parquet?view=spark-dotnet

还有:

DataFrameWriter.Csv(String)方法

https://docs.microsoft.com/en-us/dotnet/api/microsoft.spark.sql.dataframewriter.csv?view=spark-dotnet#Microsoft_Spark_Sql_DataFrameWriter_Csv_System_String_

我想知道您是否可以将DataFrame用作内存中介。

这只是一个猜测,因为您的问题吸引了我,也许我睡一会儿后就给我试一下。 :-)

答案 1 :(得分:1)

使用Cinchoo ETL-一个开放源代码库,您可以轻松地将Parquet文件转换为CSV。

安装Nuget软件包

安装软件包ChoETL.Parquet

示例代码

使用ChoETL;

StringBuilder csv = new StringBuilder();
using (var r = new ChoParquetReader(@"*** Your Parquet file ***")
    .ParquetOptions(o => o.TreatByteArrayAsString = true)
    )
{
    using (var w = new ChoCSVWriter(csv)
        .WithFirstLineHeader()
        .UseNestedKeyFormat(false)
        )
        w.Write(r);
}

Console.WriteLine(csv.ToString());

有关更多信息,请访问codeproject文章。

希望有帮助。