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"

评论

登录后才可以发表评论
枫溪发表于 8个月前
感谢分享
用户头像
levvel发表于 4个月前
来报个到