忙了一天终于把sqlloader导出数据和导入数据弄清楚了,累死俺了。。。
这个总结主要分为三个大部分,
第一部分(实例,主要分两步),第二部分(参数小总结),第三部分(完全参数总结)
第一部分
第一步 :这是我的导出数据的脚本call.sql
conn scott/tiger
set echo off
set term off
set line 1000 pages 0
set feedback off
set heading off
set trimspool on
spool /temp/test/ldr_test.csv
select a.empno||',"'||a.ename||'",'||to_char(a.hiredate,'yyyy-mm-dd hh24:mi:ss')||','||a.sal from test a;
spool off
set trimspool off
set heading on
set feedback on
set term on
set echo on
exit
注释:call.sql脚本执行方法 (1)sqlplus /nolog 先进入sqlplus命令模式
(2)start call.sql 在sqlplus命令模式下执行
第二步 :导入数据的脚本add_test.ctl
LOAD DATA
INFILE ldr_test.csv
TRUNCATE INTO TABLE test
FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"'
(EMPNO,ENAME,HIREDATE date 'yyyy-mm-dd hh24:mi:ss',SAL)
注释: 在第一步导出数据后,执行add_test.sql脚本命令为: sqlplus scott/tiger control=add_test.ctl
至此用sqlplus导入/出数据完成了,如果有些参数不明白,请看一下第二三部分。
哦..忘了说test测试表的结构了,create table test as select empno,ename,hiredate,sal from emp;
第二部分
spool本身其实没有啥难的 ,就是set参数的个数太太多啦!!!下面就是我网上Copy的,当然有一些是自己加上去的
SQL>set colsep' '; //-域输出分隔符
SQL>set newp none //设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none,这样输出的数据行都是连续的,中间没有空行之类的
SQL>set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
SQL> set echo on //设置运行命令是是否显示语句
SQL> set feedback on; //设置显示“已选择XX行”
SQL>set feedback off; //回显本次sql命令处理的记录条数,缺省为on即去掉最后的 "已经选择10000行"
SQL>set heading off; //输出域标题,缺省为on 设置为off就去掉了select结果的字段名,只显示数据
SQL>set headsep off //标题分隔符
SQL>set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。(可以简写为:set pages 0)
SQL>set linesize 80; //输出一行字符个数,缺省为80。(可以简写为:set line 80)
SQL>set numwidth 12; //输出number类型域长度,缺省为10
SQL>set termout/term off; //显示脚本中的命令的执行结果,缺省为on
SQL>set trimout on; //去除标准输出每行的拖尾空格,缺省为off
SQL>set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
SQL>set serveroutput on; //设置允许显示输出类似dbms_output
SQL> set timing on; //设置显示“已用时间:XXXX”
SQL> set autotrace on-; //设置允许对执行的sql进行分析
SQL>set verify off //可以关闭和打开提示确认信息old 1和new 1的显示.
第三部分
这个是纯Copy的set命令全家福 ,呵呵,很专业,如果看不习惯的话可以全部改成小写
使用set命令的语法如下: SET 系统变量 值
其中系统变量及其可选值如下:
ARRAY[SIZE] {20(默认值)|n}
AUTO[COMMIT] {OFF(默认值)|ON|IMM[EDIATE]}
BLO[CKTERMINATOR] {.(默认值)|C}
CMDS[EP] {;|C|OFF(默认值)|ON}
COM[PATIBILITY] {V5|V6|V7|NATIVE(默认值)}
CON[CAT] {.(默认值)|C|OFF|ON(默认值)}
COPYC[OMMIT] {0(默认值)|n}
CRT crt
DEF[INE] {&|C|OFF|ON(默认值)}
ECHO {OFF|ON}
EMBEDDED {OFF(默认值)|ON}
ESC[APE] {\(默认值)|C|OFF(默认值)|ON}
FEED[BACK] {6(默认值)|n|OFF|ON}
FLU[SH] {OFF|ON(默认值)}
HEA[DING] {OFF|ON(默认值)}
HEADS[EP] {|(默认值)|C|OFF|ON(默认值)}
LIN[ESIZE] {80(默认值)|n}
LONG {80(默认值)|n}
LONGC[HUNKSIZE] {80(默认值)|n}
MAXD[ATA] n
NEWP[AGE] {1(默认值)|n}
NULL text
NUMF[ORMAT] 格式
NUM[WIDTH] {10(默认值)|n}
PAGES[IZE] {14(默认值)|n}
PAU[SE] {OFF(默认值)|ON|text}
RECSEP {WR[APPED](默认值)|EA[CH]|OFF}
RECSEPCHAR { |C}
SCAN {OFF|ON(默认值)}
SERVEROUT[PUT] {OFF|ON} [SIZE n]
SHOW[MODE] {OFF(默认值)|ON}
SPA[CE] {1(默认值)|n}
SQLC[ASE] {MIX[ED](默认值)|LO[WER]|UP[PER]}
SQLCO[NTINUE] {>;(默认值)|文本}
SQLN[UMBER] {OFF|ON(默认值)}
SQLPER[FIX] {#(默认值)|C}
SQLP[ROMPT] {SQL>;(默认值)|文本}
SQLT[ERMINATOR] {;(默认值)|C|OFF|ON(默认值)}
SUF[FIX] {SQL(默认值)|文本}
TAB {OFF|ON(默认值)}
TERM[OUT] {OFF|ON(默认值)}
TI[ME] {OFF(默认值)|ON}
TIMI[NG] {OFF(默认值)|ON}
TRIM[OUT] {OFF|ON(默认值)}
UND[ERLINE] {-(默认值)|C|OFF|ON(默认值)}
VER[IFY] {OFF|ON(默认值)}
WRA[P] {OFF|ON(默认值)}
系统变量说明:
ARRAY[SIZE] {20(默认值)|n} 置一批的行数,是SQL*PLUS一次从数据库获取的行数,有效值为1至5000. 大的值可提高查询和子查询的有效性,可获取许多行,但也需要更多的内存.当超过1000时,其效果不大.
AUTO[COMMIT] {OFF(默认值)|ON|IMM[EDIATE]} 控制ORACLE对数据库的修改的提交. 置ON时,在ORACLE执行每个SQL命令或PL/SQL块后对数据库提交修改;置OFF时则制止自动提交,需要手工地提交修改,例如用SQL的 COMMIT命令. IMMEDIATE功能同ON.
BLO[CKTERMINATOR] {.(默认值)|C} 置非字母数字字符,用于结束PL/SQL块.要执行块时,必须发出RUN命令或/命令.
CMDS[EP] {;|C|OFF(默认值)|ON} 置非字母数字字符,用于分隔在一行中输入的多个SQL/PLUS命令.ON或OFF控制在一行中是否能输入多个命令. ON时将自动地将命令分隔符设为分号(;).其中C表示所置字符.
COM[PATIBILITY] {V5|V6|V7|NATIVE(默认值)} 指定当前所链接的ORACLE版本.如果当前ORACLE的版本为5,则置COMPATIBILITY为V5; 为版本6时置成V6; 为版本7时置成V7. 如果希望由数据库决定该设置,在置成NATIVE.
CON[CAT] {.(默认值)|C|OFF|ON(默认值)}设置结束一替换变量引用的字符.在中止替换变量引用字符之后可跟所有字符,作为体会组成部分,否则 SQL*PLUS将解释为替换变量名的一部分.当CONCAT开关为ON时,SQL*PLUS可重置CONCAT的值为点(.).
COPYC[OMMIT] {0(默认值)|n} 控制COPY命令提交对数据库修改的批数.每次拷贝n批后,将提交到目标数据库.有效值为0到5000. 可用变量ARRAYSIZE设置一批的大小.如果置COPYCOMMIT为0,则仅在COPY操作结束时执行一次提交.
CRT crt 改变SQL*PLUS RUNFORM命令使用的缺省CRT文件.如果置CRT不包含什么,则crt仅包含''''.如果在一个Form的系统调用期间,要使用NEW.CRT(缺省CRT是OLD.CRT),可按下列形式调用Form:
SQL>;RUNFORM -C NEW form名
或者
SQL>;SET CRT NEW
SQL>;RUNFORM form名
第二中方法存储CRT选择,以致在下次运行RUNFORM命令(是在同一次SQL*PLUS交互中)时,不需要指定.
DEF[INE] {&|C|OFF|ON(默认值)} 设置在替换变量时所使用的字符.ON或OFF控制SQL*PLUS是否扫描替换变量的命令及用他们的值代替. DEFINE的ON或OFF的设置控制SCAN变量的设置.
ECHO {OFF|ON} 控制START命令是否列出命令文件中的每一命令.为ON时,列出命令;为OFF时,制止列清单.
EMBEDDED {OFF(默认值)|ON} 控制每一报表在一页中开始的地方. 为OFF时,迫使每一报表是在新页的顶部开始;为ON时,运行一报表在一页的任何位置开始.
ESC[APE] {\(默认值)|C|OFF(默认值)|ON} 定义作为Escape字符的字符.为OFF时,使Escape字符不起作用.为ON时,使Escape字符起作用.
FEED[BACK] {6(默认值)|n|OFF|ON} 显示由查询返回的记录数.ON和OFF置显示为开或关.置FEEDBACK为ON时,等价于置n为1. 如果置FEEDBACK为0,等价于将它置成OFF.
FLU[SH] {OFF|ON(默认值)} 控制输出送至用户的显示设备.为OFF时,运行操作系统做缓冲区输出;为ON时,不允许缓冲. 仅当非交互方式运行命令文件时使用OFF,这样可减少程序I/O总是,从而改进性能.
HEA[DING] {OFF|ON(默认值)} 控制报表中列标题的打印.为ON时,在报表中打印列标题;为OFF时禁止打印列标题.
HEADS[EP] {|(默认值)|C|OFF|ON(默认值)} 定义标题分隔字符.可在COLUMN命令中使用标题分隔符,将列标题分成多行.ON和OFF将标题分隔置成开或关.当标题分隔为关(OFF)时,SQL*PLUS打印标题分隔符像任何字符一样.
LIN[ESIZE] {80(默认值)|n} 置SQL*PLUS在一行中显示的字符总数,它还控制在TTITLE和BTITLE中对准中心的文本和右对齐文本. 可定义LINESIZE为1至最大值,其最大值依赖于操作系统.
LONG {80(默认值)|n} 为显示和拷贝LONG类型值的最大宽度的设置. 对于ORACLE7, n的最大值为2G字节;对于版本6,最大值为32767.
LONGC[HUNKSIZE] {80(默认值)|n} 为SQL*PLUS检索LONG类型值的增量大小.由于内存的限制,可按增量检索,该变量仅应用于ORACLE7.
MAXD[ATA] n 置SQL*PLUS可处理的最大行宽字符数,其缺省值和最大值在不同操作系统中是可变的.
NEWP[AGE] {1(默认值)|n} 置每一页的头和顶部标题之间要打印的空行数.如果为0, 在页之间送一换号符,并在许多终端上清屏.
NULL text 设置表示空值(null)的文本,如果NULL没有文本,则显示空格(缺省时). 使用COLUMN命令中的NULL子句可控制NULL变量对该列的设置.
NUMF[ORMAT] 格式 设置显示数值的缺省格式,该格式是数值格式.
NUM[WIDTH] {10(默认值)|n} 对显示数值设置缺省宽度.
PAGES[IZE] {14(默认值)|n} 置从顶部标题至页结束之间的行数.在11英寸长的纸上打印报表,其值为54,上下各留一英寸(NEWPAGE值为6).
PAU[SE] {OFF(默认值)|ON|text} 在显示报表时,控制终端滚动.在每一暂停时,必须按RETURN键.ON将引起SQL*PLUS在每一报表输出页开始时暂停.所指定的文本是每一次 SQL*PLUS暂停时显示的文本.如果要键入多个词,必须用单引号将文本括起来.
RECSEP {WR[APPED](默认值)|EA[CH]|OFF}
RECSEPCHAR { |C} 指定显示或打印记录分行符的条件.一个记录分行符,是由RECSEPCHAR指定的字符组成的单行.空格为RECSEPCHAR的默认字符.
RECSEP 告诉SQL*PLUS在哪儿做记录分隔.例如将RECSEP置成WRAPPED,在每一缠绕行之后,打印记录分行符.如果将RECSEP置成 EACH,SQL*PLUS在每一行后打印一记录分行符.如果将RECSEP置成OFF, SQL*PLUS不打印分行符.
分享到:
相关推荐
- 如果使用SQL*Plus,可以使用`SPOOL`命令导出数据,并通过`SET HEAD OFF`和`SET ECHO OFF`等选项来控制输出格式。 总之,解决Oracle导出CSV文件显示乱码的关键在于理解字符编码和数据解析的过程。通过正确设置...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在数据管理和分析方面有着强大的功能。...通过这些方法,即使没有编程经验,你也能轻松地将Oracle数据库中的数据导出到Excel文件,进行进一步的分析和处理。
Oracle 导出 txt 文件方法是指使用 spool 命令将 Oracle 数据库中的数据导出到 txt 文件中。这种方法可以自定义导出格式,以便于程序直接导入。 首先,我们需要了解 Oracle 文本导出的原理。Oracle 文本导出的原理...
通过“ORACLE SQLPLUS2”的压缩包,你将获得一个轻量级的Oracle环境,可以进行基本的数据库管理和查询工作,而无需完整安装客户端。这使得在不占用大量系统资源的情况下,仍然能高效地与Oracle数据库进行交互。
Oracle SQLPlus是一款强大的数据库管理工具,它允许用户与Oracle数据库进行交互,执行SQL查询和脚本,以及进行数据导出等操作。在某些场景下,将数据导出为CSV(逗号分隔值)文件是一种常见需求,例如备份、数据分析...
【Oracle管理】ORACLE数据库sqlplus使用技巧 Sql*plus是Oracle数据库系统中的一款强大工具,用于交互式地执行SQL语句和PL/SQL块。它不仅提供了基本的查询功能,还包含了一些高级特性和技巧,能极大提高数据库管理员...
通过熟练掌握这些SQLPlus命令,你可以更高效地管理和操作Oracle数据库,无论是简单的查询还是复杂的业务逻辑处理,都能得心应手。记住,实践是检验理解和掌握这些知识的最佳方式,所以不妨立即在你的Oracle环境中...
- **导出导入数据**:通过SQL*Plus的spool功能,可以将查询结果导出为文本文件,或从文件导入数据。 总之,Oracle Instant Client 11.2带有SQL*Plus的版本是开发人员和DBA在没有完整Oracle数据库安装的情况下进行...
此外,SQLPlus还支持脚本执行、数据导入导出、生成报表等功能。 2. **Oracle SQLPlus 11.2**: 这个版本是指Oracle SQLPlus的11.2版,是Oracle Database 11g Release 2的一部分。11.2版带来了许多增强的功能和性能...
通过SQL*Plus,用户可以连接到Oracle数据库,管理数据,创建和维护数据库对象,并执行自动化任务。在本文中,我们将深入探讨Oracle SQL*Plus的一些核心功能和使用技巧。 1. **连接数据库** 使用SQL*Plus,用户可以...
- **数据导入导出**:虽然不是 SQL*Plus 的核心功能,但可以通过调用其他 Oracle 工具(如 SQL*Loader 和 Export/Import)来实现数据的导入导出。 #### 三、SQL*Plus 常用命令详解 - **登录命令**:使用 `sqlplus ...
运行此脚本后,你会得到一个`dept_data.csv`文件,其中DEPTNO和DNAME字段由逗号分隔,非常适合导入到电子表格或其他数据分析工具中。 总结起来,SQL*Plus提供了丰富的命令选项,可以帮助我们更高效地管理和操作...
- **数据导入导出**:`SPOOL filename`将输出重定向到文件,`SPOOL OFF`关闭重定向。 - **异常处理**:`WHENEVER SQLERROR`定义在SQL错误发生时的动作,`WHENEVER OSERROR`处理操作系统错误。 4. **SQL*Plus交互...
在这个实践操作中,我们将深入理解SQL*Plus的基本操作,包括数据库的启动和关闭、常用命令的使用以及如何通过Java连接Oracle数据库。 首先,了解如何启动和关闭数据库是至关重要的。在DOS或Windows环境下,可以通过...
用户可以通过ODBC驱动程序连接到Oracle数据库,执行SQL语句,将查询结果导入到Excel表格中,然后利用Excel的计算和图表功能进行数据分析。 在SQL*Plus中,还可以使用`SET`命令调整输出格式,如`SET COLSEP ' '`设置...
综上所述,通过以上步骤,可以从Oracle数据库中导出数据并将其导入到DB2数据库中,从而实现两个不同数据库系统之间的数据迁移。在整个过程中,需要注意数据的一致性和完整性,确保迁移后的数据能够正常工作。
- 表格结构:外部表的结构需要与源Oracle表匹配,否则可能导致数据导入错误。 - 文件大小:XLS文件有大小限制,如果数据量大,可能需要分批次导出或考虑使用其他格式如XLSX或CSV。 5. **优化和扩展:** - 对于大...
在数据库管理中,`Spool` 和 `SQL*Loader` 是两种非常重要的工具,尤其在数据导入导出和批量处理方面。本实例将探讨如何在Linux环境下利用Shell脚本配合这两种工具实现高效的数据操作。 首先,`Spool` 是Oracle SQL...
在IT行业中,数据库管理和数据分析是至关重要的任务,而SQLPlus作为一个强大的命令行工具,它为Oracle数据库用户提供了方便的数据查询、处理以及报表生成能力。本文将深入探讨如何使用SQLPlus生成TXT或HTML报表,这...