使用c#将 CSV文件转换为Parquet



我是c#新手,我们需要从csv生成拼花文件。我们的文件大小高达30gb,所以在生成时性能是重要的。

我没有从谷歌得到任何帮助/建议来处理。

可以有人建议或分享解决方案请(控制台/脚本任务)。

你可以使用这个NuGet包,它包括从c#类到parquet文件的自动序列化/反序列化器,它通过动态生成MSIL(字节码)来工作,因此非常快。

我还没有尝试过,但可以通过CLI工具来做,只需从c#调用这些工具,即"shell out"。

  • https://github.com/domoritz/arrow-tools

这个问题至少有三种不同的解决方案。

可以将CSV文件读入IEnumerable<Dto>,并使用Parquet.NetParquetSharp写入parquet文件。

第三个解决方案是使用DuckDB.Net编写一个SQL语句,将CSV直接读入Parquet文件。

COPY (
SELECT * 
FROM read_csv('flights.csv', delim='|', header=True, columns={'FlightDate': 'DATE', 'UniqueCarrier': 'VARCHAR', 'OriginCityName': 'VARCHAR', 'DestCityName': 'VARCHAR'})
) TO 'test.parquet' (FORMAT 'parquet', COMPRESSION 'ZSTD', ROW_GROUP_SIZE 100000)

使用DuckDb.NetADO.NET连接器

免责声明:我是DuckDB.Net项目的贡献者。

最新更新