你好,我想写个shell脚本连接oracle服务器查询某表数据并且导出到txt文本
你好,我想写个shell脚本连接oracle服务器查询某表数据并且导出到txt文本中,能说下么?我不懂这个,谢谢...
你好,我想写个shell脚本连接oracle服务器查询某表数据并且导出到txt文本中,能说下么?我不懂这个,谢谢
展开
展开全部
使用shell调用sqlplus来执行sql语句,导出到文件可以通过spool命令指定文件,我从自己曾经写的脚本截取一段给你示例吧,如果你熟悉shell编写的话,很容易改造成自己需要的
参数1-6分别是表名,oracle用户名,oracle密码,oracle服务器ip地址,oracle服务器端口,oracle服务器的服务名(如果不确定联系DB管理员)
T_NAME=$1
USERID=$2
PASSWD=$3
IP=$4
PORT=$5
SERVICENAME=$6
DB_LINK_STR=$USERID/$PASSWD@$IP:$PORT/$SERVICENAME
sqlplus -S $DB_LINK_STR<<EOF
set HEADING OFF
SET ECHO OFF
SET FEEDBACK OFF
SET TERMOUT OFF
SET LINESIZE 1000
SET TRIMSPOOL ON
spool temp.out
select COLUMN_NAME||' '||DATA_TYPE||' '||DATA_LENGTH||' ',DATA_DEFAULT from user_tab_columns where table_name='$T_NAME' order by column_id;
spool off
exit
EOF
sed -i '/^$/d' temp.out
执行完毕后,就会出现temp.out文件,里面是指定表的一些信息:列名,数据类型,数据长度和默认值,且以空格分隔
参数1-6分别是表名,oracle用户名,oracle密码,oracle服务器ip地址,oracle服务器端口,oracle服务器的服务名(如果不确定联系DB管理员)
T_NAME=$1
USERID=$2
PASSWD=$3
IP=$4
PORT=$5
SERVICENAME=$6
DB_LINK_STR=$USERID/$PASSWD@$IP:$PORT/$SERVICENAME
sqlplus -S $DB_LINK_STR<<EOF
set HEADING OFF
SET ECHO OFF
SET FEEDBACK OFF
SET TERMOUT OFF
SET LINESIZE 1000
SET TRIMSPOOL ON
spool temp.out
select COLUMN_NAME||' '||DATA_TYPE||' '||DATA_LENGTH||' ',DATA_DEFAULT from user_tab_columns where table_name='$T_NAME' order by column_id;
spool off
exit
EOF
sed -i '/^$/d' temp.out
执行完毕后,就会出现temp.out文件,里面是指定表的一些信息:列名,数据类型,数据长度和默认值,且以空格分隔
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询