根据大小将单个大csv文件拆分为多个csv文件,并通过UNIX保留源文件的文件头
我们得到的是:一个以字段名为标题的单一文件csv文件 我们需要:根据大小将单个大csv文件拆分为多个csv文件,并通过UNIX保留源文件的文件头,csv,unix,Csv,Unix,我们得到的是:一个以字段名为标题的单一文件csv文件 我们需要: 根据文件大小,我们需要使用exptension _00*将其拆分为多个较小的csv文件 条件:如果文件大小5 GB,则将其拆分为多个文件,其维度范围在(1 GB到$base.OK”并关闭OK } 这不是一个问题,而是一个规范,就目前情况而言,更适合在众多自由编程网站之一上发布。俗话说,SO不是一个代码编写服务。关于使用awk到Python等工具拆分CSV,有很多问题:如果您使用的是一个,并且有问题,那么你应该编辑你的问题,以便更具
#/usr/bin/perl-p
#!/usr/bin/perl -p
BEGIN
{
$dim = 5e9;
$header = <>; # We need to preserve the header record
exit if -s ARGV < $dim; # If file_size < 5 GB then no action.
$headsize = $told = tell;
# ranges between ( 1 GB to < 5 GB )
$dim = ($dim+(-s _)/int(1+(-s _)/$dim))/2 if (-s _)%$dim <= 1e9;
($base = $ARGV) =~ s/.csv/_/;
$extent = "000"
}
if (tell > $lim) # need new file?
{
$lim = $told+$dim-$headsize;
open OK, ">$base$extent.ok" and close OK if $output;
$output = $base.++$extent.'.csv';
open STDOUT, ">$output" or die "$output: $!\n";
print $header # replicate into each new file.
}
$told = tell;
END
{
open OK, ">$base$extent.ok" and close OK if $output;
chop $base;
unlink $ARGV and open OK, ">$base.ok" and close OK
}
开始
{
$dim=5e9;
$header=;#我们需要保留header记录
如果-s ARGV<$dim;#如果文件大小<5 GB,则不执行任何操作,则退出。
$headsize=$tell=tell;
#介于(1 GB到<5 GB)之间的范围
$dim=($dim+(-s-)/int(1+(-s-)/$dim))/2如果(-s-)%$dim$lim)需要新文件?
{
$lim=$TELL+$dim-$headsize;
打开OK,“>$base$extent.OK”,如果$output,则关闭OK;
$output=$base.+$extent.'.csv';
打开STDOUT“>$output”或die“$output:$!\n”;
打印$header#复制到每个新文件中。
}
$tell=tell;
结束
{
打开OK,“>$base$extent.OK”,如果$output,则关闭OK;
切掉$base;
取消链接$ARGV并打开OK,“>$base.OK”并关闭OK
}
这不是一个问题,而是一个规范,就目前情况而言,更适合在众多自由编程网站之一上发布。俗话说,SO不是一个代码编写服务。关于使用awk到Python等工具拆分CSV,有很多问题:如果您使用的是一个,并且有问题,那么你应该编辑你的问题,以便更具体地说明你的困难。