如何通过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
相关产品推荐
相关产品推荐

