使用 C# 或其他程序转置 csv 文件
我使用 C# 并将数据写入 csv 文件(以供进一步使用)。然而我的文件已经变得很大,我必须转置它们。最简单的方法是什么?在任何程序中?
吉尔
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我使用 C# 并将数据写入 csv 文件(以供进一步使用)。然而我的文件已经变得很大,我必须转置它们。最简单的方法是什么?在任何程序中?
吉尔
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
按照复杂性的增加顺序(以及处理大文件的能力的增加顺序):
List
中。然后遍历所有行,对于每一行:查找保存的位置,将一个单元格复制到输出,保存新位置。重复此操作,直到用完列(所有行都到达换行符)。最后评论:通过使用 C++(或任何具有适当指针支持的语言)、内存映射文件和指针而不是文件偏移量,您可能会获得更多性能。
In increasing order of complexity (and also increasing order of ability to handle large files):
List<Int64>
. Then iterate across all rows, for each row: seek to the saved position, copy one cell to the output, save the new position. Repeat until you run out of columns (all rows reach a newline).Final comment: You might squeeze out more performance by using C++ (or any language with proper pointer support), memory-mapped files, and pointers instead of file offsets.
这确实取决于。您是否从数据库中获取这些内容?您可以使用 MySql import 语句。 http://dev.mysql.com/doc/refman/5.1 /en/load-data.html
或者您可以使用循环数据将其添加到使用 Streamwriter 对象的文件流中。
It really depends. Are you getting these out of a database? The you could use a MySql import statement. http://dev.mysql.com/doc/refman/5.1/en/load-data.html
Or you could use could loop through the data add it to a file stream using streamwriter object.
我用 python 写了一个概念验证脚本。我承认它有问题,并且可能需要进行一些性能改进,但它会做到这一点。我对 40x40 文件运行它并得到了所需的结果。我开始针对更像您的示例数据集的东西运行它,但我等待的时间太长了。
I wrote a little proof-of-concept script here in python. I admit it's buggy and there are likely some performance improvements to be made, but it will do it. I ran it against a 40x40 file and got the desired result. I started to run it against something more like your example data set and it took too long for me to wait.