You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell脚本将Oracle SQL表数据导出为单行格式?

解决Oracle SQL导出结果换行问题的Shell脚本调整

修改后的脚本

#!/bin/bash
# 初始化日期变量(可按需调整格式)
date=$(date +%Y%m%d)

# 使用Here-Document简化SQL*Plus命令输入,避免转义问题
export_result=$(sqlplus -s "$SCHEMA/$PW@$CONN" <<EOF
set pages 0 feed off linesize 2000 trimspool on trimout on wrap off
select * from pi_milutin.krovni_export;
EOF
)

# 将结果写入目标文件
echo "$export_result" > "ME_1384_DataWarehouse_$date.txt"

关键参数说明

  • linesize 2000:设置SQL*Plus输出行的最大宽度,值需大于表中所有列的总宽度,防止因行宽不足自动换行。如果表列较多,可适当调大数值(比如5000)。
  • trimspool on:去除输出行末尾的多余空格,同时避免因行宽设置导致的强制换行。
  • trimout on:针对SQL*Plus输出流去除末尾空格,和trimspool配合确保输出紧凑。
  • wrap off:禁止列内容因长度超过列宽自动换行到下一行。

额外处理:列内容含换行符的情况

如果表中某些列本身存储了换行符(如chr(10)或chr(13)),需要在SQL查询中替换这些换行符,才能保证整行在同一行输出:

select 
  replace(replace(col_name1, chr(10), ''), chr(13), '') as col_name1,
  replace(replace(col_name2, chr(10), ''), chr(13), '') as col_name2,
  -- 其他列按此格式处理
from pi_milutin.krovni_export;

内容的提问来源于stack exchange,提问作者MikiNK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:52:20