Linux中操作Oracle数据库

十四、操作Oracle数据库

1.sqlpus中“-L”“-S”用法

1)sqlplus中查询并赋值,通常使用“-S”以安静模式登录(不显示sqlplus的版本、帮助、提示、命令信息),通常用来获取查询结果并赋值给变量。(slient)

SYS_DATE=`sqlplus -S ORACLEUSER/PASSWORD@$ORACLE_SID <<EOF 
        set heading off
        set pagesize 0;
        set feedback off;
        set verify off;
        set echo off;
        
    SELECT SYSDATE FROM DUAL;
        QUIT
EOF`

2)sqlplus中执行DML、Procecure,通常使用“-L”,仅登录一次,通常用来执行procedure、DML

sqlplus -L ORACLEUSER/PASSWORD@$ORACLE_SID <<EOF
    set serveroutput on
    set linesize 120
    set pagesize 0
    set TAB off
    set FEEDBACK off
    set HEADING off
    set TRIMOUT off
    set Verify off

        INSERT INTO T1 VALUES ('TOUGH1',SYSDATE);
        EXEC TOUGH_PROC('HK');
        COMMIT;
        QUIT
EOF

2.sqlplus和shell互相传值的情况

1)情况一:在shell中最简单的调用sqlplus

$cat test.sh

#!/bin/sh

sqlplus oracle/oracle@oracle>file.log <<EOF

select * from test;

exit

EOF  #注意EOF要顶格写

$sh test.sh

$cat file.log

--省略若干系统提示信息-------

SQL>

EMPNO   EMPNAME          SAL      DEPTNO

-----   -------------    -----    ------

10002   Frank Naude      500      20

10001   Scott Tiger      1000     40

--省略若干系统提示信息-------

将执行过程重定向入文件file.log,可通过cat file.log查看

2)情况二:直接将sqlplus的值赋值给shell变量

$cat test.sh

#!/bin/sh

# 将sqlplus的结果输出给变量VALUE

# set命令的使用可查询手册

#注意shell中等号两边不能有空格

VALUE=`sqlplus -S /nolog <<EOF

set heading off feedback off pagesize 0 verify off echo off

conn oracle/oracle@oracle

select count(*) from test;

exit

EOF`

#输出记录数

echo "The number of rows is $VALUE."

$sh test.sh

The number of rows is    2.

显示结果正确,表test共2条记录

3)情况三:间接将sqlplus的值赋值给shell变量

$cat test.sh

#!/bin/sh

#利用COL column NEW_VALUE variable定义变量

#sqlplus执行完后最后返回值为v_coun

#利用$?将最后返回值赋值给VALUE,也即为test的记录数

sqlplus -S /nolog <<EOF

set heading off feedback off pagesize 0 verify off echo off

conn oracle/oracle@oracle

col coun new_value v_coun

select count(*) coun from test;

exit v_coun

EOF

VALUE="$?"

echo "The number of rows is $VALUE."

$sh test.sh

         2

The number of rows is 2.

脚本执行结果中第一个2为sqlplus返回值,第二个2为VALUE的值

4)情况四:将shell变量的值传给sqlplus使用

$cat test.sh

#!/bin/sh

#sqlplus引用shell变量TABLENAME的值

#注意赋值时,等号两边不能有空格

TABLENAME="test"

sqlplus -S oracle/oracle@oracle <<EOF

select * from ${TABLENAME};

exit

$sh test.sh

EMPNO EMPNAME                                                   SAL DEPTNO

----- -------------------------------------------------- ---------- ------

10002 Frank Naude                                               500 20

10001 Scott Tiger                                              1000 40

脚本执行结果为:select * from test;的结果

5)情况五:通过交互方式手工输入shell变量值

$cat test.sh

#!/bin/sh

#将手工输入变量值读入变量TABLENAME

echo  "Enter the tablename you want to select:"

read TABLENAME

sqlplus -S oracle/oracle@oracle <<EOF

select * from ${TABLENAME};

exit

$sh test.sh

#按提示输入表名test

Enter the tablename you want to select:

test

 

EMPNO EMPNAME                                                   SAL DEPTNO

----- -------------------------------------------------- ---------- ------

10002 Frank Naude                                               500 20

10001 Scott Tiger                                              1000 40

脚本执行结果为select * from test的执行结果

3.安装Oracle数据库(太复杂暂不研究,有需要的朋友可以下载docker镜像研究)

4.数据的导出

1)表方式
只导出某个用户下的几张表:导出scott用户下的dept和emp的数据
在这里插入图片描述

2)用户(方案)方式
导出scott用户下的所有的内容:
在这里插入图片描述

导出:exp ploan/ploan file=ploan.dmp log=ploan.log owner=ploan
导入:imp ploan/ploan@ploan file=ploan.dmp fromuser=ploan touser=ploan

3)全库方式
导出整个数据库:必须是数据库管理员,普通用户不可以
在这里插入图片描述

4)提示模式
只需要输入:exp scott/tiger 后面会有提示,按照提示一步步完成导出

5…dat文件导入数据库的方法(也可以用CSV文件)

导入语句
sqlldr userid=用户名/密码@ip/数据库实例 control=.ctl文件的所在位置 rows=100000 direct=y data=.dat文件价的位置 log=log文件的位置

6.Linux连接数据库

1)登录:
sqlplus 用户名/密码

2)不需要用户登录:
sqlplus /nolog
需要登录时:conn 用户名

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值