求一份shell脚本,需求是:从Oracle数据库中提取一个表中的数据输出到文件,并且每条记录一行;

中间用逗号分开,每个字段值。求大神帮忙!

应用spool命令,大量数据汇出很方便,脚本内容大致如下:
--============================================
#!/bin/sh
#第一步
sqlplus -s 用户名/密码@服务名<<EOF
spool customers.sql --输出文件路径及名称
set trimspool on
set linesize 8000
set pagesize 50000
set newpage 1
set heading off
set term off
set feedback off
set sqlblankline off
SELECT A || '|+|' || --字段A
B || '|+|' || --字段B
C || '|+|' || --字段C
D || '|+|' || --字段D
E || '|+|' || --字段E
F || '|+|' || --字段F
G || '|+|' || --字段G
TO_CHAR(H,'YYYYMMDD HH:MM:SS') || '|+|' --字段H,可以使用函数
FROM CUSTOMERS;--表名
spool off
exit
EOF
--=======================
其中'|+|'为分隔符,也可以换成你说的逗号,即','。调用该脚本后,在根目录下生成customers.sql文件。追问

我还想问一下,我有一个结果字段中是中文的。我发现这样导出来之后,中文是乱码。这该怎么办呢?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-17
#!/bin/sh
sqlplus -s 数据库用户名/数据库用户密码@SID <<EOF >X.txt #登录数据库输出结果导向文件
set trimout on
set linesize 1000
select name||','||id||','||age||','||add from tb_XX
EOF
相似回答