GBase 8a
其他
文章
南大通用GBase 8a之加载数据跳过尾行的方法
发表于2025-08-13 16:25:39114次浏览2个评论
加载数据跳过尾行的方法
load data 暂不支持跳过尾行加载。遇到大文件加载时,加载前,
可先用以下脚本删除待加载文件的末尾行(考虑到大文件的处理效率,用truncate)。脚本如下:
large_file="/opt/1.dat"
# 1. 获取文件总字节数
total_size=$(stat -c %s "$large_file")
# 2. 获取最后一行内容
last_line=$(tail -n 1 "$large_file")
# 3. 计算最后一行的实际字节数(含特殊字符/多字节字符)
# echo -n 避免额外添加换行符,wc -c 精确统计字节数
last_line_bytes=$(echo -n "$last_line" | wc -c)
# 4. 判断最后一行末尾是否有换行符(\n 占1字节)
# 取文件最后1字节,转换为十六进制(\n的十六进制是0a)
last_char=$(tail -c 1 "$large_file" | od -An -t x1)
if [ "$last_char" = " 0a" ]; then
newline=1 # 有换行符,占1字节
else
newline=0 # 无换行符
fi
# 5. 计算需要保留的字节数(总大小 - 最后一行字节数 - 换行符字节数)
keep_size=$((total_size - last_line_bytes - newline))
# 6. 截断文件
truncate -s "$keep_size" "$large_file"热门帖子
- 12025-12-01浏览数:182764
- 22023-05-09浏览数:25062
- 42023-09-25浏览数:18526
- 52020-05-11浏览数:17529