你好,我想写个shell脚本连接oracle服务器查询某表数据并且导出到txt文本

2024-12-18 00:04:48
推荐回答(1个)
回答1:

使用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< 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文件,里面是指定表的一些信息:列名,数据类型,数据长度和默认值,且以空格分隔