2014-10-20 205 views
-2

我是新手Go lang程序员,试图学习Go lang功能。我想在GO lang中将一个大的csv文件分成多个文件,每个文件都包含头文件。我该如何做?我到处搜索,但无法得到正确的解决方案。在这方面的任何帮助将不胜感激。 也请给我推荐一本好书供参考。如何在GO lang中将大型csv文件分割成多个文件?

感谢你

回答

2

根据您的外壳福这个问题可能更适合于通用的shell工具,但你特别提到去。

让我们来思考问题。

这个csv文件有多大?我们在说100线还是5G?

如果它的短小我通常使用这样的:

http://golang.org/pkg/io/ioutil/#ReadFile

然而,这个包还存在:

http://golang.org/pkg/encoding/csv/

无论如何 - 让我们回到问题的抽象。你有一个标题(这是第一行),然后是文档的其余部分。

所以我们可能想做的事情(如果忽略csv的话)是在我们的文件中读取。

然后我们想分割文件正文中的所有换行符。

您可以使用该这样做:

http://golang.org/pkg/strings/#Split

你没有提到,但你知道你想要多少个文件拆分的还是宁愿有行数或字节数分裂?这里的实际限制是什么?

通常它不会是文件数,但如果我们假装它是我们只是想要我们的行数除以我们预期的文件数给行/文件。现在

我们可以采取适当大小的片,并通过文件写回:

http://golang.org/pkg/io/ioutil/#WriteFile

我用一段时间来帮助招把我扔这些东西写下来我们的使命。

“我要一个大的CSV文件分割成多个去文件”

然后,我开始打破了成片,但拿分/治之的方法 - 不要试图解决一个整个问题去 - 把它分解到你可以考虑的地方。

此外 - 使用伪代码,直到你可以舒适地写真正的代码本身。有时候只需写一个简短的评论就可以了,因为你认为代码应该流动,然后将代码放到可以从那里编码和工作的最小部分。

顺便说一句 - 许多golang。org软件包有示例链接,您可以在浏览器中真正运行示例代码并将其剪切/粘贴到您自己的本地环境中。

而且,我知道我会捕捉一些憎恨这个 - 但对书籍 - IMO - 你会只是试图把事情的工作,而不是从阅读中学习速度快了很多。行动总是胜过被动。不要害怕失败。

+0

请记住,CSV可以在列中包含换行符。:) – 2015-08-07 01:45:03

相关问题