oracle sqlplus执行sql文件
- 格式:doc
- 大小:26.00 KB
- 文档页数:2
Sql*plus的使用Sql*plus的使用Sql*plus介绍Sql*plus是oracle提供的一个工具程序,既可以在oracle服务器使用,也可以在oracle 客户端使用。
在windows下分两种,sqlplus.exe是命令行程序,sqlplusw.exe是窗体程序,通常我们在开始菜单中启动的是后者,两者的功能是一致的。
Sql*plus是一个最常用的工具,具有很强的功能,主要有:1. 数据库的维护,如启动,关闭等,这一般在服务器上操作。
2. 执行sql语句执行pl/sql。
3. 执行sql脚本。
4. 数据的导出,报表。
5. 应用程序开发、测试sql/plsql。
6. 生成新的sql脚本。
7. 供应用程序调用,如安装程序中进行脚本的安装。
2 dual表dual是一张系统表,同时也被定义成了public同义词。
它只有一个字段和一条记录。
该表本身的结构和数据没有什么意义,主要是借助该表进行其它操作。
如:select sysdate from dual; --获取函数值select 21+15*3 from dual; --计算表达式的值说明:不要对dual表进行ddl与dml操作,只进行查询操作。
3 sql*plus使用3.1 启动sql*plus1. 不带参数启动启动sqlplusw.exe程序,会弹出登陆框,让输入用户名、密码和连接字符串,在用户名中输入“/nolog”,表示先进入sql>提示符,先不连接数据库,下面可以利用connect命令连接数据库。
启动sqlplus.exe程序,会提示输入用户名与密码。
如果用户名输入2. 带参数启动下面列举一些最常见的方式,还有很多可选参数。
1) 不连接数据库sqlplus /nolog2) 连接数据库sqlplus username/password3) 使用net8连接字符串连接数据库sqlplus username/password@connstr4) 连接后执行filename指定的sql脚本,sql脚本中是sql命令和sql*plus的设置命令sqlplus username/password[@connstr] @filename3.2 sql*plus的命令3.2.1 帮助命令1. help命令格式:help 命令名,用于知道某个具体命令的帮助信息。
通过f5查看到的执行计划,其实是pl/sql developer工具内部执行查询 plan_table表然后格式化的结果。
select * from plan_table where statement_id=...。
其中description列描述当前的数据库操作,object owner列表示对象所属用户,object name表示操作的对象,cost列表示当前操作的代价(消耗),这个列基本上就是评价sql语句的优劣,cardinality列表示操作影响的行数,bytes列表示字节数篇二:plsqldeveloper工具使用教程plsql入门pl/sql的概述pl/sql的优势pl/sql是一种块结构的语言,允许你将业务逻辑封装在一起,这是到目前为止使用pl/sql的最大优势pl/sql是在服务器上运行,可以与数据库和sql引擎直接进行交互,pl/sql是什么?(procedural language/sql) 是oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用列外处理各种错误,这样使得它的功能变得更加强大。
特性: 减少java程序的复杂性一.过程,函数,触发器是pl/sql编写的二.过程、函数、触发器是在oracle中三. pl/sql是非常强大的数据库过程语言四.过程,函数可以再java程序中调用为什么学?a) 提高应用程序的运行性能b) 模块化的设计思想[分页的过程,订单的过程,转账的过程]c) 减少网络传输量(传统的方法,用sql语句传输!现在就只需要调用存储过程) d) 提高安全性(传统sql 可以看到表名字段等…)不好:移植性不好,(你写好的存储过程,函数等当我们要换数据库时,这些东西就没用了)开发工具:1. sqlplus 开发工具是oracle公司提供的一个工具,这个因为我们在以前介绍过:2. pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide)它是一个独立的产品,而不是oracle的一个附带品,createprocedure sp_pro1//存储过程名字 isbegin---执行部分insert into mytest values(‘’,’’);end;/查看错误信息show error;调用过程:有两中方式1 exec 过程名(参数值1,参数值2…..)2 call 过程名用pl/sql developer--案例create or replace procedure简单分类pl/sql developer 工具的使用:plsql developer是一个为oracle数据库开发存储程序单元的集成开发环境,使用plsql developer你能方便的创建你的客户/服务器应用程序的服务器部分。
Sql*plus中蕴藏着好多技巧,如果掌握这些技巧,对于在oracle数据库下进行快速开发与有效维护数据库都是有益的。
1.使用SQL*PLUS动态生成批量脚本将spool与select命令结合起来使用,可以生成一个脚本,脚本中包含有可以批量执行某一任务的语句。
例1:生成一个脚本,删除SCOTT用户下的所有的表:a. 创建gen_drop_table.sql文件,包含如下语句:SPOOL c:\drop_table.sqlSELECT 'DROP TABLE '|| table_name ||';' FROM user_tables;SPOOL OFFb. 以SCOTT用户登录数据库SQLPLUS > @ …..\gen_dorp_table.sqlc. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示:SQL>SELECT 'DROP TABLE '|| table_name ||';' FROM user_tables;'DROPTABLE'||TABLE_NAME||';'------------------------------------DROP TABLE DEPT;DROP TABLE EMP;DROP TABLE PARENT;DROP TABLE STA T_VENDER_TEMP;DROP TABLE TABLE_FORUM;5 rows selected.SQL>SPOOL OFFd. 对生成的drop_table.sql文件进行编辑去掉不必要的部分,只留下drop table …..语句e. 在scott用户下运行dorp_table.sql文件,删除scott用户下所有的表。
SQLPLUS > @ c:\dorp_table.sql在上面的操作中,在生成的脚本文件中会有多余的字符,如运行的sql语句,标题,或返回的行数,需要我们编辑该脚本后再运行,给实际的操作带来诸多不便。
导⼊导出dmp⽂件、执⾏sql⽂件导出dmpcreate directory expDir as'/oracle/oracle_data/expDmp';Grant read,write on directory expDir to GSDX_GZZSV1;服务名⽅式:expdp GSDX_GZZSV1/gzzs@127.0.0.1/ schemas=GSDX_GZZSV1 directory=expDir dumpfile=GSDX_GZZSV1.dmp logfile=GSDX_GZZSV1.log;SID:expdp JTDX_HUNT_PD_TESTV1/HUNT_PD_TEST directory=JTDX_DIR dumpfile=JTDX_HUNT_PD_TESTV1.dmp导⼊dmp1.⾸先要知道dmp⽂件的导出⽅式是expdp还是exp 然后⽤对应的⽅式导⼊2.知道表空间CLOUD_AH_IOM3.知道⽤户名cloud_123_gs4.创建⽤户,并带有表空间sqlplus / as sysdbacreate tablespace CLOUD_AH_IOM datafile '${ORACLE_HOME}\oradata\cloud_ah_iom.dbf' size 100M reuse autoextend on next 40M maxsize unlimited default storage(initial128k next 128k minextents 2 maxextents unlimited);这⾥指定dbf⽂件的时候,如果⽤户⽬录不同,要将对这个⽬录的操作权限赋值chown -R oracle oracle_data/使⽤root ⽤户将oracle_data/ ⽬录的操作权限赋值给oracle创建⽤户:create user cloud_123_gs identified by cloud_123_gs default tablespace CLOUD_AH_IOM;5.赋权grant connect,resource,dba to cloud_123_gs;grant unlimited tablespace to cloud_123_gs;grant create database link to cloud_123_gs;grant select any sequence,create materialized view to cloud_123_gs;6.创建⽬录,并授权create or replace directory dpump_dir as '/home/oracle/dmp'; --这⾥是dmp⽂件所在的⽂件路径select * from dba_directories;grant read,write on directory dpump_dir to cloud_123_gs7.导⼊命令impdb:表空间,⽤户相同impdp cloud_123_gs/cloud_123_gs DIRECTORY=dpump_dir DUMPFILE=expdp.dmp SCHEMAS=cloud_123_gs;impdb:修改表空间和⽤户impdp SOC2/SOC2 directory=JILIN_ZHENDUAN_DIR dumpfile=expdp_soc1029.dmp remap_schema=SOC:SOC2REMAP_TABLESPACE='(SOC_TBS:JILIN_SOC_1_TBS)' logfile=soc2.log解释:SOC2/SOC2 ⽤户名/密码directory 第六步中创建的dumpfile dmp⽂件路径(在dmp⽂件所在路径,可以直接⽤⽂件名)remap_schema:SOC:SOC2 从dmp的SOC⽤户导⼊为新的SOC2⽤户REMAP_TABLESPACE='(SOC_TBS:JILIN_SOC_1_TBS)' 表空间映射从SOC_TBS 导⼊到JILIN_SOC_1_TBSnohup impdp XJYD_SOCV1/soc DIRECTORY=XJYD_DIR dumpfile=YTH2018.dmp logfile=YTH2018.log exclude=table:"in('AUTHENTICATE_LOG')"remap_schema=ISAP:XJYD_SOCV1remap_tablespace=TBS_AL:XJYD_SOC_1_TBS,TBS_ALIDX:XJYD_SOC_1_TBS,TBS_DATA:XJYD_SOC_1_TBS,TBS_SOC:XJYD_SOC_1_TBS,TBS_TE:XJYD_SOC_1_TBS,TBS_TEIDX:XJYD_ &exclude=table:"in('AUTHENTICATE_LOG')" 可以让dmp⽂件内的AUTHENTICATE_LOG表不导⼊nohup impdp HBLT_IOMTESTV1/IOMTEST directory=HBLT_DIR dumpfile=IOMTEST_20190320.dmp remap_schema=IOMTEST:HBLT_IOMTESTV1 TRANSFORM=segment_attributes:n logfile=IOMTEST_20190320_2.log &segment_attributes:n 可以让remap_tablespace参数⽆效,把所有的表导⼊到创建⽤户时的默认表空间⾥⾯imp 修改表空间(貌似没⽤)nohup imp YNDX_ZDV1/YN_ZD_213 file='YN_ZD1011.dmp' tablespaces=YNDX_EOMS_PUBLIC_1_TBS full=y ignore=y log='YNDX_ZDV1.log' &***如果数据库存在多个实例,如何进⾏不同数据库的导⼊?在命令⾏执⾏:export ORACLE_SID=orcl12cexport ORACLE_SID=orcl进⾏切换不同的数据库实例。
oraclespool⽤法及执⾏.sql⽂件spool⽤法:在PL/SQL developer ⾥⾯打开COMMAND Windown(命令窗⼝):SQL> spool d:\1.txtStarted spooling to d:\1.txtSQL>(输⼊查询SQL)SQL>spool offStopped spooling to d:\1.txt就可以在d盘找到⽂件1.txt,⽂件⾥有查询SQL所查询的数据了。
执⾏SQL⽂件:SQL>start d:\1.sql就可以运⾏1.sql⽂件中的语句了。
关于SPOOL(SPOOL是SQLPLUS的命令,不是SQL语法⾥⾯的东西。
)对于SPOOL数据的SQL,最好要⾃⼰定义格式,以⽅便程序直接导⼊,SQL语句如:select taskindex||'|'||commonindex||'|'||tasktype||'|'||to_number(to_char(sysdate,'YYYYMMDD')) from ssrv_sendsms_task;spool常⽤的设置set colsep' '; //域输出分隔符set echo off; //显⽰start启动的脚本中的每个sql命令,缺省为onset feedback off; //回显本次sql命令处理的记录条数,缺省为onset heading off; //输出域标题,缺省为onset pagesize 0; //输出每页⾏数,缺省为24,为了避免分页,可设定为0。
set termout off; //显⽰脚本中的命令的执⾏结果,缺省为onset trimout on; //去除标准输出每⾏的拖尾空格,缺省为offset trimspool on; //去除重定向(spool)输出每⾏的拖尾空格,缺省为off导出⽂本数据的建议格式:SQL*PLUS环境设置SET NEWPAGE NONESET HEADING OFFSET SPACE 0SET PAGESIZE 0SET TRIMOUT ONSET TRIMSPOOL ONSET LINESIZE 2500注:LINESIZE要稍微设置⼤些,免得数据被截断,它应和相应的TRIMSPOOL结合使⽤防⽌导出的⽂本有太多的尾部空格。
Oracle SQL*PLUS基础及sqlplus命令详解-1Oracle SQL*PLUS基础Oracle的SQL*PLUS是设计所有应用系统的基础工具。
要想将应用系统设计成一个健壮的、性能优越的系统。
最关键的是要理解RDBMS的真正含义和结构,理解Oracle SQL*PLUS的特点和核心,弄清关系数据库与桌面数据库的差别。
比如理解数据的完整性、一致性、索引、视图等。
只有这样才能设计出符合Oracle特点的应用系统。
从而保证系统在提供使用后不会出现一致性、性能等问题。
§1.1 理解关系数据库系统(RDBMS)CODASYL(数据系统语言协会)是数据库任务组(Database Task Group,DBTG)创建的一种数据库标准,这是一种基于COBOL的网络数据库标准。
§1.1.1 关系模型一个描述两个集合的元素如何相互联系或如何一一对应的数学概念,对于数据库来说,关系只是一个带有一些特殊属性的表。
所以有:l 数据的基础项是关系l 在这些表上的操作只产生关系一个关系表必须符合某些特定条件,才能成为关系模型的一部分l 储存在单元中的数据必须是原子的。
每个单元只能存储一条数据,叫信息原则(Information Principle)。
如果存储多条则违反信息原则。
特舒情况下可能需要违反信息原则。
l 储存在列下的数据必须具有相同的数据类型。
l 每一行是唯一的(没有完全相同的行)。
l 列没有顺序。
l 行没有顺序l 列有一个唯一性的名称。
关系模型的另一个是完整性原则。
它包括实体完整性原则(Entity integrity rule)和引用完整性原则(Referential integrity rule ),如:l 主键( Primary key )是能唯一标识行的一列或一组列的集合。
l 由多个列构成的主键称为连接键(Concatenated key)、组合键(Compound key ),或称作为复合键(Composity key )。
oracle登录sql语句标题:Oracle登录SQL语句示例1. 使用用户名和密码登录Oracle数据库```sqlsqlplus username/password@//hostname:port/service_name```说明:将`username`替换为数据库用户名,`password`替换为密码,`hostname`替换为数据库服务器的主机名或IP地址,`port`替换为数据库监听的端口号,`service_name`替换为数据库的服务名。
2. 使用用户名和密码登录指定实例的Oracle数据库```sqlsqlplus username/password@//hostname:port/instance_name```说明:与示例1类似,只是将`service_name`替换为数据库的实例名。
3. 使用用户名和密码登录本地Oracle数据库```sqlsqlplus username/password```说明:在本地登录时,可以省略主机名、端口和服务名/实例名。
4. 使用用户名和密码登录Oracle数据库,并执行SQL脚本文件```sqlsqlplus username/password@//hostname:port/service_name @/path/to/script.sql```说明:将`/path/to/script.sql`替换为要执行的SQL脚本文件的路径。
5. 使用用户名和密码登录Oracle数据库,并执行SQL命令```sqlsqlplus username/password@//hostname:port/service_name <<EOFSQL_COMMANDSQL_COMMAND...EOF```说明:将`SQL_COMMAND`替换为要执行的SQL命令,可以使用多个SQL命令。
6. 使用用户名和密码登录Oracle数据库,并执行匿名PL/SQL块```sqlsqlplus username/password@//hostname:port/service_name <<EOFBEGINPL/SQL_CODE;PL/SQL_CODE;...END;/EOF```说明:将`PL/SQL_CODE`替换为要执行的PL/SQL代码,可以使用多个PL/SQL语句。
oracle sql执行流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 解析(Parse):当用户提交 SQL 语句时,Oracle 首先对其进行解析。
[原创]oracle sqlplus执行sql文件
Oracle执行外部文件:
c:>sqlplus user/pwd@db
sql>@new.sql
执行多个sql文件:
1.把所有的文件都放在同一个目录下,然后在命令行里执行命令:
c:>dir/b > d:\1.sql
会把所有的sql文件名都输出到一个sql文件中。
2.用UltraEdit打开生成的sql文件,alt+C切换到column mode,给所有的行前都添加一个“@”,保存。
3.在sqlplus中执行“@d:\1.sql”
如何避免'&'字符:
sql中&可以传递参数,但有时需要插入'&',例:
SQL> select '&hello' v from dual;
输入hello 的值: hello
原值1: select '&hello' v from dual
新值1: select 'hello' v from dual
v
-----
hello
可以使用如下方法避免:
A:
SQL> select chr(38) || 'hello' v from dual;
V
------
&hello
B:
SQL> set define off
SQL> select '&hello' v from dual;
V
------ &hello。