在实际生产中有时我们需要将一张表的数据导入到另外一张表,如果有PLSQL,我们可以通过PLSQL工具将数据导出为sql脚本,然后再在另外一个数据库中执行这个脚本。但有时在实际生产中我们没有PLSQL这个工具,而且PLSQL的导出工具也不是特别好用。这时我们可以通过sqlplus中的spool工具,将我们需要的数据导出为sql建表脚本。

  spool工具是将我们在sqlplus中的输出写入自己需要的文件中,如此也就是说,我们通过查询,将查询结果输出为建表语句,然后将这些语句输出到sql脚本中即可。

  假设我们有一个pay1表,里面有“ID”,“NAME”,“AMOUNT”3个字段,我们需要将这个表的数据导出为pay2表的插入语句。具体实现如下:

  在sqlplus中依次执行下面语句

set heading off
set feedback off
set term off

  这一部分是对spool 的写入数据进行控制

spool d:\sql\pay.sql  ---将结果写入到pay.sql中

  

select 'INSERT INTO pay2 (id2,nam2,amount2) VALUES('||chr(39)||ID||chr(39)||','||chr(39)||NAME||chr(39)||','||chr(39)||AMOUNT||chr(39)||');' FROM pay1 order by ID;

  这是配插入语句的。其中  ||  是拼接符,将字符串和字段连接起来;chr(39)是Unicode字符中的单引号,由于无法进行转义,所以用chr(39)代替;两个单引号中间的逗号是字符串;ID、NAME、AMOUNT是pay1表的字段;id2、nam2、amount2是pay2表的字段。由于配插入语句较为麻烦,所以建议在其他地方写完之后再复制粘贴到sqlplus中,注意中间不要有换行符。

spool off   ----输入这句之后才会将结果写入到pay.sql中,否则pay.sql是空的

  

由于spool会将所有信息都写入到pay.sql中,所以pay.sql会有一些多余的信息不能直接使用,需要对其进行修改之后再使用。但我认为这个修改是可以避免的,由于我本人对spool不是特别了解,所以希望有对spool了解的朋友能在评论区告知一二。

  

【SQL】ORACLE在sqlplus中使用spool方式生成建表语句的更多相关文章

  1. sqlserver 表中记录生成insert,可以加条件,可以生成建表语句

    sqlserver 表中记录生成insert,可以加条件,可以生成建表语句 create PROCEDURE [sp_getinsert] ( ) , --如果非默认架构,可以加上架构名 例如:sch ...

  2. SQL Server 执行计划中的扫描方式举例说明

    SQL Server 执行计划中的扫描方式举例说明 原文地址:http://www.cnblogs.com/zihunqingxin/p/3201155.html 1.执行计划使用方式 选中需要执行的 ...

  3. Oracle 自动生成hive建表语句

    从 oracle 数据库导数到到 hive 大数据平台,需要按照大数据平台的数据规范,重新生成建表的 SQL 语句,方便其间,写了一个自动生成SQL的存储过程. ① 创建一张表,用来存储源表的结构,以 ...

  4. oracle基本建表语句

    oracle基本建表语句 2010-09-20 10:37:33|  分类: 数据库 |  标签:数据库  oracle  |字号 订阅 --创建用户create user han identifie ...

  5. SQL SERVER 生成建表脚本

    /****** Object: StoredProcedure [dbo].[GET_TableScript_MSSQL] Script Date: 06/15/2012 11:59:00 ***** ...

  6. powerdesigner中将表的name在生成建表sql时生成注释

    1.为powerdesigner的表设置注释方法: powerdesigner默认没有注释: 设置方法: 选择那个表 右键- >Properties- >Columns- >Cust ...

  7. (转)SQL SERVER 生成建表脚本

    https://www.cnblogs.com/champaign/p/3492510.html /****** Object: StoredProcedure [dbo].[GET_TableScr ...

  8. MySQL 建表语句 create table 中的列定义

    MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...

  9. oracle的建表语句

    oracle数据库的建表语句,具体语法如下: CREATE TABLE tablename (column_name datatype [null,not null], column_name dat ...

随机推荐

  1. poj 3376 Finding Palindromes

    Finding Palindromes http://poj.org/problem?id=3376 Time Limit: 10000MS   Memory Limit: 262144K       ...

  2. 命令行访问远程mysql数据库

    命令: mysql -u用户名 -p密码 -h远程数据库IP地址 -P端口 -D数据库名 例子: 使用用root帐号,密码为123456,登录ip地址为192.168.1.110,端口为3306,名称 ...

  3. 使用Docker搭建Django,Nginx,R,Python部署环境

    转载自https://blog.csdn.net/The_One_is_all/article/details/76063968 基本环境: Ubuntu 16.10 docker 17.06.0-c ...

  4. IConfigurationSectionHandler 接口

    IConfigurationSectionHandler 处理对特定的配置节的访问. 示例代码: public class MyConfig : IConfigurationSectionHandle ...

  5. szoj657 【AHSDFZNOI 7.2 WuHongxun】Odd

    [题目大意] 给出$n$个数$a_1, a_2, ..., a_n$,求有多少个区间$[l, r]$,满足每个数都出现了奇数次. $1 \leq n \leq 2 * 10^5, 0 \leq a_i ...

  6. 【POJ】1222 EXTENDED LIGHTS OUT

    [算法]高斯消元 [题解] 高斯消元经典题型:异或方程组 poj 1222 高斯消元详解 异或相当于相加后mod2 异或方程组就是把加减消元全部改为异或. 异或性质:00 11为假,01 10为真.与 ...

  7. Object的公用方法们

    如图所示,Object一共有10种方法: 下面详细描述: 1.public Object() 方法,默认构造函数方法,当新建一个Object对象的时候,调用这个方法向堆区申请一片内存: 2.priva ...

  8. 9.quartus_warning_altera_reserved_tck

    编译的时候没有注意,整个工程都可以在板子上跑起来.但是做Powerplay的时候,出现了这个Critical Warning:. Critical Warning: The following clo ...

  9. Linux Platform驱动模型(二) _驱动方法【转】

    转自:http://www.cnblogs.com/xiaojiang1025/archive/2017/02/06/6367910.html 在Linux设备树语法详解和Linux Platform ...

  10. C基础 工程中常用的排序

    引言 - 从最简单的插入排序开始 很久很久以前, 也许都曾学过那些常用的排序算法. 那时候觉得计算机算法还是有点像数学. 可是脑海里常思考同类问题, 那有什么用呢(屌丝实践派对装逼学院派的深情鄙视). ...