要输出符合要求格式的数据文件只需在select时用字符连接来规范格式。比如有如下表
SQL>; select id,username,password from myuser;//测试表 1 John 1234 2 Jack 12345 3 Rose 2345 4 Joe 384657 5 Tom 384655 6 Jordan 384455 |
要输出符合1,John,1234,这样的数据格式就用select id||','||username||','||password||',' from myuser这样的语句。
SQL>; select id||','||username||','||password||',' from myuser; 1,John,1234, 2,Jack,12345, |
写个下面这样的脚本就行可以输出符合要求格式的数据至文件中,不会含有其它不需要东西,只有数据部分。
--脚本文件名为expmyusr.sql,存数据的文件名为e:\exp.txt
set echo on --是否显示执行的命令内容 set feedback off --是否显示 * rows selected set heading off --是否显示字段的名称 set verify off --是否显示替代变量被替代前后的语句。fil set trimspool off --去字段空格 set pagesize 1000 --页面大小 set linesize 50//linesize设定尽量根据需要来设定,大了生成的文件也大 define fil= 'e:\exp.txt' prompt *** Spooling to &fil spool &fil select id||','||username||','||'"'||password||'"' from myuser; spool off; --执行过程 |
检查可知结果符合要求。
Oracle SPOOL的两种方法之对比
通常情况下,我们使用SPOOL方法,将数据库中的表导出为文本文件的时候会采用两种方法,如下述:
方法一:采用以下格式脚本
set colsep '' ------设置列分隔符 set trimspool on set linesize 120 set pagesize 2000 set newpage 1 set heading off set term off spool 路径+文件名 select * from tablename; spool off |
方法二:采用以下脚本
set trimspool on set linesize 120 set pagesize 2000 set newpage 1 set heading off set term off spool 路径+文件名 select col1||','||col2||','||col3||','||col4||'..' from tablename; spool off |
比较以上方法,即方法一采用设定分隔符然后由sqlplus自己使用设定的分隔符对字段进行分割,方法二将分隔符拼接在SELECT语句中,即手工控制输出格式。
在实践中,我发现通过方法一导出来的数据具有很大的不确定性,这种方法导出来的数据再由sql ldr导入的时候出错的可能性在95%以上,尤其对大批量的数据表,如100万条记录的表更是如此,而且导出的数据文件狂大。
而方法二导出的数据文件格式很规整,数据文件的大小可能是方法一的1/4左右。经这种方法导出来的数据文件再由sqlldr导入时,出错的可能性很小,基本都可以导入成功。
因此,实践中我建议大家使用方法二手工去控制spool文件的格式,这样可以减小出错的可能性,避免走很多弯路。
相关推荐
在实际应用中,我们可以使用两种方法来编写脚本。第一种方法是将 SQL 和执行脚本写到一个文件中,这种方法主要适用于 UNIX 系统中。例如: ``` #!/bin/sh send_day=`sqlplus -s $DB_USER/$DB_PWD@$DB_SERV SET TIME...
在Oracle数据库管理中,"spool"和"sqlldr"是两种非常实用的工具,用于数据的导出和导入操作。下面将详细解释这两个概念及其使用方法。 **1. Spool导出** Spool是Oracle SQL*Plus中的一个功能,它允许用户将SQL*...
本文将详细介绍一种使用SQL*Plus有选择地导出Oracle数据到Excel的方法,该方法已在实际环境中成功运行。 首先,我们需要了解SQL*Plus是Oracle提供的一款命令行工具,用于执行SQL查询和PL/SQL程序。通过它,我们可以...
这两种工具都可以用来批量导入数据。例如,使用SQL*Loader命令行工具: ``` sqlldr userid=your_username/your_password control=c:\control_file.ctl log=c:\log_file.log data=c:\data.csv ``` 其中`control_...
在数据库管理中,`Spool` 和 `SQL*Loader` 是两种非常重要的工具,尤其在数据导入导出和批量处理方面。本实例将探讨如何在Linux环境下利用Shell脚本配合这两种工具实现高效的数据操作。 首先,`Spool` 是Oracle SQL...
高级选项中包括了ConventionalPathLoad与DirectPathLoad两种加载方式的对比,以及如何使用SPOOL导出文本数据。 ### 用户管理的备份与恢复 在用户管理的备份与恢复中,涉及到设置ARCHIVELOG模式和NONARCHIVELOG模式...
- **SPOOL导出文本数据方法**: 一种简便的数据导出方式。 **2.3 脚本** - **将表中数据记录导出为字段值用分隔符'|'分开的.dat文件**: 示例脚本展示如何导出数据。 - **将数据导入到相应表中**: 示例脚本介绍如何...
在实现这个方案时,通常有两种方法。第一种是使用SQL*PLUS的SPOOL命令,它可以将SQL查询的结果直接输出到文件中,但这种方法对复杂数据抽取和大量数据处理的能力有限。第二种方法是编写自定义程序,通过编程语言(如...
以下将详细讲解Oracle中数据加载和卸载的几种实现方法。 一、Oracle中的DBLINK DBLINK是Oracle提供的一种连接不同数据库的机制,它允许用户在不同的Oracle数据库之间建立连接,进行数据查询和交换。创建DBLINK的...
标记选项包括ON/OFF开关、头部文本、主体文本、表格文本、实体映射开关、SPool开关和预格式化开关。 6. **-RESTRICT**:限制SQL*Plus的功能,提高安全性。1、2、3分别代表不同的限制级别,具体功能受限程度取决于所...
SQL Plus支持两种类型的注释:使用`/*...*/`的块注释和`REMARK`命令添加单行注释,这些注释不会被解释执行,只供阅读者参考。 总结来说,SQL Developer和SQL Plus都是Oracle数据库的重要管理工具,它们各有侧重点,...
- 包含独特技巧,如导出触发器的方法等。 - 覆盖Oracle8i和Oracle9i OCP认证大纲内容。 - **适用范围**: 适用于Oracle数据库管理人员、应用开发人员、系统分析与设计人员以及高校计算机专业师生。 - **局限性**:...
- **Oracle SQL*PLUS**:是Oracle数据库的一种交互式工具,用于执行SQL语句、脚本文件,并查看其结果。SQL*PLUS支持多种操作系统环境。 ##### 1.1 关系数据库系统 (RDBMS) - **关系模型**:关系模型是基于关系数学...
- **spool+路径**:用于将查询结果导出到文件。 - **连接操作符:||**:用于连接两个字符串值。 - **DISTINCT**:用于去除重复的记录,只显示不同的值。 **1.5 SQLPLUS与SQL的关系** SQLPLUS是Oracle提供的一个...
在Oracle数据库中,角色是权限集合的一种抽象化表示形式。 **1. connect角色** - _说明_: 该角色允许用户登录到数据库,并执行基本的SELECT操作。 **2. resource角色** - _说明_: 除了connect角色的功能外,还...
总的来说,Oracle的热备份和逻辑备份是两种重要的数据保护手段,它们在数据库管理中扮演着不可或缺的角色。理解并熟练掌握这两种备份方式,对于保障业务连续性和数据安全性至关重要。通过阅读和学习“Oracle.doc”...
SQL*PLUS提供了两种方式来执行存储在文本文件中的SQL语句: - `START file_name` 或 `@ file_name`。这两个命令都可以用来运行包含SQL语句的文件,但`@`命令通常用于执行当前目录或通过`SQLPATH`环境变量指定路径...
SQL*Loader有两种运行模式:基本模式(conventional path)和直接模式(direct path),根据不同的场景和性能需求选择合适的模式。 #### 二、SQL*Loader基础命令 ##### 基础命令格式: ``` sqlldr [username/...