GBase 8a
其他
问答

LOAD DATA加载文本如何跳过末尾行

发表于2025-08-13 11:04:46139次浏览4个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:9.5.3

【问题描述】*:LOAD DATA加载文本如何跳过末尾行

悬赏:1吉币
回答被发帖人采纳后可获得赏金

评论

登录后才可以发表评论
pikaysw发表于 11个月前
没有办法跳过末尾行,只能跳过文件开头的n行。跳过末尾行可以尝试通过业务调整+精准格式加载来实现,让末尾行不符合加载要求无法加载到该表从而实现跳过。

IGNORE NUM LINES:配置该参数加载工具会将本次加载指定的所有数据文
件的表头进行过滤,跳过每个文件的前 NUM 行(表头所占行数),NUM 取
值范围为[0,MAX_UINT]
BYRAN发表于 11个月前
加载前,先用以下脚本删除待加载文件的末尾行(考虑到大文件的处理效率,用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个月前
崔哥发表于 8个月前
莫许杯深琥珀浓,未成沉醉意先融。疏钟已应晚来风。瑞脑香消魂梦断,辟寒金小髻鬟松。醒时空对烛花红。