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

中间用逗号分开,每个字段值。求大神帮忙!... 中间用逗号分开,每个字段值。求大神帮忙! 展开
 我来答
百度网友4150a8c
2014-02-16 · TA获得超过2018个赞
知道小有建树答主
回答量:629
采纳率:25%
帮助的人:310万
展开全部
应用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文件。
追问
我还想问一下,我有一个结果字段中是中文的。我发现这样导出来之后,中文是乱码。这该怎么办呢?
爱I薇薇
2014-02-17 · TA获得超过281个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:142万
展开全部
#!/bin/sh
sqlplus -s 数据库用户名/数据库用户密码@SID <<EOF >X.txt #登录数据库输出结果导向文件
set trimout on
set linesize 1000
select name||','||id||','||age||','||add from tb_XX
EOF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式