Shell命令将大文件分割成10个小文件
我有一个 csv 导入文件,其中包含 3300 万行,需要导入到我的数据库中。我可以使用 C# 控制台应用程序导入它,然后使用在导入超时后运行的存储过程。因此我想将文件拆分为 10 个较小的文件。
我可以用 C# 来完成,但我怀疑使用 shell 实用程序有更好的方法。我安装了 cygwin,并且可以使用所有常见的 Linux shell 实用程序。是否有一个简洁的命令组合可以用来分割文件?
I have a csv import file with 33 million lines that need to be imported into my database. I can import it with a C# console app but then the stored procedures that run after the import timeout. Consequently I want to split the file into 10 smaller files.
I could do it in C# but I suspect there's a much better approach using shell utilities. I have cygwin installed and can use all the common Linux shell utilities. Is there a neat little combination of commands I could use to split the file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
split
- 例如,每 340 万行分割一个文件(应该为您提供 10 个文件):split -l 3400000
$ 人分裂
Use
split
- e.g. to split a file every 3.4 million lines (should give you 10 files):split -l 3400000
$ man split
按行拆分很好,但是您也可以按大小拆分
从原始文件创建 1MB 文件
从原始文件创建 1GB 文件
splitting by line is good however you can also split by size
creates 1MB files out of the original
creates 1GB files out of original
coreutils 8.8(尚未发布)中的 split 版本将具有命令
现在您需要指定每个文件的特定行数
The version of split in coreutils 8.8 (not yet released) will have the command
For now you'll need to specify a particular number of lines per file
如果您的 csv 文件有 500 行要分成两部分(250+250),
请下载并安装“Cygwin Terminal”
并添加注释“split -l 250 filename.csv”
If your csv file have 500 rows to split two part(250+250)
download and install "Cygwin Terminal"
put comment "split -l 250 filename.csv"