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

发布于 2024-10-20 14:41:44 字数 1536 浏览 2 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

沩ん囻菔务 2024-10-27 14:41:44

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

您没有明确说明是否需要将标题行(如果有)复制到每个结果文件中。同样,应该很简单——只需在将数据复制到每个文件之前执行此操作即可。

您还可以采用以下方法:在 Unix 上使用 tar 或在 Windows 上使用一些类似 Zip 的实用程序来一般性地拆分文件,然后告诉您的大文件挑战伙伴从该格式重建文件。或者,也许简单地压缩 CSV 文件就可以了,并让您在实践中低于限制。

How about just copying the first 1 GB of data from the source into a new file, then searching backward for the last newline, and truncating the new file after that. Then you know how large the first file is, and you repeat the process for a second new file from that point to 1 GB later. Seems straightforward to me in just about any language (you mentioned C#, which I haven't used recently, but certainly it can easily do the job).

You didn't make it clear whether you need to copy the header line (if any) to each of the resulting files. Again, should be straightforward--just do it prior to the copying of data into each of the files.

You could also take the approach of just generically splitting the files using tar on Unix or some Zip-like utility on Windows, then telling your large-file-challenged partner to reconstruct the file from that format. Or maybe simply compressing the CSV file would work, and get you under the limit in practice.

爱*していゐ 2024-10-27 14:41:44

您只需要注意几件事:

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

There are just a few things you need to take care of:

  • Keep the line breaks: split the file on a new line (algorithmically said split the file on the previous line to that where the 1GB limit occured minus the header line size)
  • Copy the header to the beginning of the new file and then paste the rest
  • Preserve the encoding.
缺⑴份安定 2024-10-27 14:41:44

在 bash/终端提示符中,写入:

man split

.. then

man wc

.. 只需计算文件中的行数,将其除以 X,输入要分割的数字,您就有 X 个小于 1.1GB 的文件(如果 x = 文件大小/1.1 )

In a bash/terminal prompt, write:

man split

.. then

man wc

.. simply count the number of lines in the file, divide it by X, feed the number to split and you have X files less than 1.1GB (if x = filesize/1.1)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文