在实际生产中有时我们需要将一张表的数据导入到另外一张表,如果有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. Android程序始终横屏

    在AndroidManifest.xml文件里面的activity标签中加入以下属性 android:screenOrientation="landscape" android:c ...

  2. 自定义View的实现流程

    1.继承View组件,比如,LabelView继承了View   2.重写两个构造方法,比如,对于自定义View LabelView   LabelView(Context context),如果该自 ...

  3. 【BZOJ】2705: [SDOI2012]Longge的问题

    [题意]给定n,求∑gcd(i,n),(1<=i<=n),n<=2^32 [算法]数论(欧拉函数,gcd) [题解]批量求gcd的题目常常可以反过来枚举gcd的值. 记f(g)为gc ...

  4. Android检测View的可见性

    Android中我们经常会用到判断View的可见行,当然有人会说View.VISIBLE就可以了,但是有时候这个真是满足不了,有时候我们为了优化,在View滚到得不可见的时候或者由于滚到只显示了部分内 ...

  5. HDU 2084 数塔 (dp)

    题目链接 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数 ...

  6. 控制 Cookie 的作用范围

    默认时,网站的所有 Cookies 都一起被存储在客户端,并且所有 Cookies 连同网站的任何请求一起被发送到服务器.换句话说,网站中的每个页面都能够为网站获取所有的 Cookies.但是,你能够 ...

  7. perl模拟登录(1)

    use WWW::Mechanize; my $ua = WWW::Mechanize->new(); $ua->post('http://localhost/dvwa/DVWA-mast ...

  8. GitHub创建项目入门学习

    第一次创建git项目注意事项还是挺多了,这里就写个操作步骤,方便以后查看. 网页部分 1.打开自己的主页,点击“New repository”创建远程仓库. 2.填写信息 本地部分 前提: 下载git ...

  9. IE6下面的hover不兼容

    第一种解决方法: ie6中hover只是对a标签有作用 必须有href=“”,否则都不管用,如果不能写a标签,还想让ie6下有滑过效果,那只能写javascript或者jquery. 例如:ie6是不 ...

  10. MySQL的读写分离---主从复制、主主复制

    1.复制是基于BinLog日志 存在三种日志格式:Statement:存储Sql语句,存储日志量是最小的.有可能复制不一致Row:存储event数据,存储日志量大,但是不能很直接进行读取:Mixed: ...