将CSV文件拆分为精确的1GB文件或更少?

时间:2011-03-08 12:55:36

标签: c# csv split size limit

我们每个月收到的发票文件总是大于2GB,我们的印刷厂有1.1GB的限制,我们目前手工完成所有这些过程。

此应用程序的第一步是能够将这些巨大的2GB文件拆分为有限的1GB文件,其方式不会破坏每个CSV条目,并且每个文件从开始到结束都是可读的而不会破坏任何数据。

我如何将文件拆分给我以上的要求?

CSV文件上有这样的处理库吗?

3 个答案:

答案 0 :(得分:2)

如何将源中的前1 GB数据复制到新文件中,然后向后搜索最后一个换行符,然后截断新文件。然后你知道第一个文件有多大,然后重复该过程,从那一点开始第二个新文件到1 GB。几乎任何语言对我来说都是直截了当的(你提到过C#,我最近没有用过它,但当然它可以很容易地完成这项工作)。

您没有明确是否需要将标题行(如果有)复制到每个生成的文件中。同样,应该是直截了当的 - 只需在将数据复制到每个文件之前进行。

您还可以采用在Unix上使用tar或在Windows上使用类似Zip的实用程序来一般分割文件的方法,然后告诉您的大文件挑战合作伙伴从该格式重建文件。或者只是简单地压缩CSV文件就可以了,并且在实践中让你达到极限。

答案 1 :(得分:1)

您需要照顾一些事项:

  • 保留换行符:在新行上拆分文件(算法上说将前一行的文件拆分为发生1GB限制减去标题行大小的文件)
  • 将标题复制到新文件的开头,然后粘贴其余文件
  • 保留编码。

答案 2 :(得分:0)

在bash / terminal提示符下,写下:

man split

..然后

man wc

..只需计算文件中的行数,除以X,输入要拆分的数字,并且X文件小于1.1GB(如果x = filesize / 1.1)