@MacBook-Pro 202412 % cd ~/Downloads
@MacBook-Pro Downloads % mkdir 文件夹名
@MacBook-Pro Downloads % cp 原始表文件名.csv tmp
@MacBook-Pro Downloads % cd 创建好的文件夹下
@MacBook-Pro tmp % split -l 1000000 原始表文件名.csv
/*将文件按每100万条数据分割一次*/
@MacBook-Pro tmp % ls
原始表文件名.csv xac
xaa xad
xab
@MacBook-Pro tmp % ls -alhf
total 2962008
drwxr-xr-x 7 lihui staff 224B 1 8 16:58 .
drwx------@ 102 lihui staff 3.2K 1 8 16:58 ..
-rw-r--r--@ 1 lihui staff 713M 1 8 16:58 Google_20241201_20241231_结算报告_原始表.csv
-rw-r--r-- 1 lihui staff 217M 1 8 16:58 xaa
-rw-r--r-- 1 lihui staff 216M 1 8 16:58 xab
-rw-r--r-- 1 lihui staff 60M 1 8 16:58 xad
-rw-r--r-- 1 lihui staff 220M 1 8 16:58 xac
最后再把第一个文件xaa中的表头复制编辑到xab xac xad中,且修改四个拆分后的文件名后缀为.csv
可直接使用的拆分小工具 保存为.sh后缀文件即可直接使用:
# 检查命令行参数
if [ $# -ne 1 ]; then
echo "Usage: $0 <source_file>"
echo "Example: $0 large_file.csv"
exit 1
fi
# 获取源文件名
source_file="$1"
# 检查源文件是否存在
if [ ! -f "$source_file" ]; then
echo "Error: File '$source_file' not found!"
exit 1
fi
# 获取文件名和后缀
filename=$(basename "$source_file")
extension="${filename##*.}"
filename_no_ext="${filename%.*}"
echo "Starting to split file: $source_file"
# 创建临时目录
tmp_dir="split_tmp_$$"
mkdir -p "$tmp_dir"
# 保存表头
head -n 1 "$source_file" > "$tmp_dir/header.txt"
echo "Header saved"
# 拆分文件(跳过表头)
tail -n +2 "$source_file" | split -l 1000000 -a 3 - "$tmp_dir/${filename_no_ext}_part_"
echo "File split completed"
# 为每个拆分后的文件添加表头并加上后缀
for file in "$tmp_dir/${filename_no_ext}_part_"*; do
if [ -f "$file" ]; then
output_file="$(basename "$file").${extension}"
echo "Adding header to $output_file"
cat "$tmp_dir/header.txt" "$file" > "$output_file"
fi
done
# 清理临时文件和目录
rm -rf "$tmp_dir"
echo "Split complete! Files created with prefix: ${filename_no_ext}_part_ and suffix: .${extension}"
echo "Done!"
执行命令bash 工具名.sh 文件名.xlsx