`
moonsee
  • 浏览: 135472 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在*.SQL文件里获取并使用变量(用于java 调用备份数据库中,生成文件名不同的数据库备份)

阅读更多
在*.SQL文件里获取并使用变量
熟悉Oracle SQL语法的人可能都知道在*.sql文件里可以用&1、&2、... &9 ... 变量名称去获取并使用变量。
  
  以scott用户, 举例如下:
  在C盘的根目录下写一个SQL文件 c:\sql1.sql
  
  select empno,ename,job,sal from emp where deptno=[$1 and sal>&2]
  
  在SQL*PLUS下带参数调用 c:\sql1.sql
  
  SQL> c:\sql1.sql 20 1500
  
  输入被截为66个字符
  原值  1: select empno,ename,job,sal from emp where deptno=&1 and sal>&2
  新值  1: select empno,ename,job,sal from emp where deptno=20 and sal>1500
  
  EMPNO ENAME   JOB       SAL
  ----- ---------- --------- ----------
  7369 SMITH   CLERK      2000
  7566 JONES   MANAGER     2975
  7788 SCOTT   ANALYST     3000
  
  SQL> c:\sql1.sql 10 2000
  
  输入被截为66个字符
  原值  1: select empno,ename,job,sal from emp where deptno=&1 and sal>&2
  新值  1: select empno,ename,job,sal from emp where deptno=10 and sal>2000
  
  EMPNO ENAME   JOB       SAL
  ---------- ---------- --------- -----
  7782 CLARK   MANAGER     2450
  7839 KING    PRESIDENT    5000
  
  但是这种获取并使用变量的方法不太方便,变量名必须按出现的顺序以1,2,3,......来命名,相同变量也要传递多次, 还有一定的数量限制。
  
  有时我们要获取系统内已有的参数或者固定格式的系统时间,就要采取另一种方法:
  
  比如以system用户,查看数据库物理文件的具体信息 c:\sql2.sql
  
  column db_block_size new_value blksz noprint;
  select value db_block_size from v$parameter where name='db_block_size';
  
  column tablespace_name format A16;
  column file_name format A60;
  set linesize 160;
  select file_name,round(bytes/(1024*1024),0) as total_space,autoextensible,
  increment_by*&blksz/(1024*1024) as increment,maxbytes/(1024*1024) as maxsize
  from dba_data_files order by tablespace_name;
  
  说明:column db_block_size new_value blksz noprint;
  
  把查询出来的db_block_size赋值到变量blksz, 这样出现多次的&blksz变量都可以被一个系统内已有的参数值所替换。
  
  类似的,可采用如下的方法获取固定格式的系统时间:
  
  比如查询前一天订单的数量,并生成操作系统下的文件  c:\sql3.sql
  
  column yesterday new_value checkdate noprint;
  select to_char(sysdate-1,'yyyy-mm-dd') yesterday from dual;
  
  spool c:\[$checkdate..txt]
  
  select count(*) from orders
  where ordertime>=to_date('&checkdate','yyyy-mm-dd')
  and ordertime<to_date('[$checkdate','yyyy-mm-dd')+1]
  
  spool off;
分享到:
评论

相关推荐

    JAVA实现数据库备份与还原

    为了在Java应用程序中实现对上述两种工具的调用,可以使用Java的`Runtime.getRuntime().exec()`方法来执行外部命令。这种方法允许Java程序通过调用操作系统命令来执行特定任务。 ##### 3.1 备份数据库 下面是一个...

    java调用mysql命令 导入导出数据库

    在Java编程中,调用MySQL命令来导入和导出数据库是一种常见的操作,这涉及到数据库管理、数据迁移或者备份恢复等场景。在这个过程中,Java通过JDBC(Java Database Connectivity)接口与MySQL进行交互,利用MySQL...

    数据库自动备份

    ARJ是一款古老的但依然实用的文件压缩软件,它支持多种压缩格式,并且可以通过命令行界面操作,非常适合在批处理脚本中使用。在配置"autobackup.bat"时,你需要明确ARJ.exe的完整路径,确保批处理文件在运行时能正确...

    Java连接数据库所需驱动

    在Java项目中使用SQL Server JDBC驱动,需要将对应的jar文件添加到项目的类路径中。如果你使用的是IDE如Eclipse或IntelliJ IDEA,可以通过右键点击项目,选择“Build Path” -&gt; "Configure Build Path" -&gt; ...

    Delphi中SQL Server数据库备份与恢复的实现 (1).pdf

    存储过程中使用了动态SQL语句来执行备份和恢复操作,而这些操作都建立在与系统数据库master的连接上。 为了实现这些功能,Delphi开发环境中的窗体设计变得非常重要。开发者需要在窗体中添加ADOConnection控件,以...

    postgresql数据库备份和恢复

    在这里,`-h` 参数用来指定数据库服务器的地址(对于本地数据库,通常使用 `localhost`),`-U` 参数用来指定用于连接数据库的用户名,`&lt;databasename&gt;` 是要备份的数据库名称,而 `&gt;` 符号后面的 `&lt;backupfile&gt;` 是...

    PL/SQL Developer 中文手册

    - 支持在程序中使用变量,便于管理和维护代码。 #### 四、测试与调试 1. **创建测试脚本** - 快速构建测试用例,确保程序逻辑正确无误。 2. **运行测试脚本** - 在IDE内部直接运行测试脚本,查看执行结果。 3. *...

    Java实现MySQL数据库备份

    在Java编程环境中,实现MySQL数据库备份通常涉及到操作系统命令行调用和文件操作。这段代码提供了一个名为`MySQLDatabaseBackup`的类,该类包含了将MySQL数据库导出为SQL文件的功能。下面将详细解释这个过程: 1. *...

    MS SQL2000数据库自动备份技术.doc

    本文档主要介绍了如何配置SQL Server 2000数据库以实现异地自动备份,并在备份完成后删除超过15天的旧备份。这一过程涉及到了数据库的存储过程、作业以及Transact-SQL语句的使用。 首先,我们需要两台运行Windows ...

    MS SQL数据库备份和恢复存储过程

    在MS SQL Server中,数据库备份和恢复是维护数据安全与完整性的关键操作。本文将详细介绍如何使用存储过程来实现这两个功能。 首先,我们来看备份数据库的存储过程`pr_backup_db`。这个存储过程用于创建一个数据库...

    Oracle数据库定时自动备份批处理代码(Windows)

    Oracle数据库定时自动备份对于保障数据安全至关重要,尤其是在Windows环境下,通过批处理脚本可以实现这一功能。以下是一个详细的Oracle数据库定时自动...确保定期备份并妥善保管备份文件是防止数据丢失的重要措施。

    (高职)《SQL-Server数据库技术》期末考试卷综合测试题带答案6.doc

    2. **变量使用**:在SQL Server中,局部变量通常以"@"开头,例如@Myvar,用于存储和处理局部范围内的数据。 3. **主键概念**:主键是表中唯一标识实体的字段,它可以创建唯一的索引,但不一定允许空值。一个表只能...

    SQL Server 2005 Express自动备份及删除旧备份文件

    首先,我们需要创建一个T-SQL脚本来生成数据库备份文件,并确保文件名包含日期和时间戳,这有助于管理和追踪备份文件。下面是一个示例脚本,用于生成带有日期时间戳的备份文件名: ```sql -- 创建T-SQL脚本 DECLARE...

    php分卷备份还原mysql数据库.pdf

    在给定的文件中,我们看到了两个PHP文件,`Mydb.php` 和 `Bakeup.php`,它们是用于MySQL数据库的备份和恢复操作的。这些文件主要使用PHP的MySQL扩展来与数据库交互。下面将详细解释其中涉及的知识点: 1. **...

    Java全阶段综合笔试面试题(含答案)

    - **finalize**: 对象被垃圾回收之前调用的方法,用于释放资源,但在Java 9之后已废弃。 **6. 运行时异常与一般异常的异同** - **运行时异常**: 通常是由程序错误导致的异常,比如空指针异常。 - **一般异常**: ...

    mysql数据库备份并上传

    然后,它调用mysqldump来创建数据库的SQL备份文件,文件名包含了当前日期以便区分不同的备份。最后,使用内置的FTP命令行工具上传备份文件到指定的FTP目录。 在执行此脚本之前,确保MySQL已经正确安装并在系统环境...

    kettel循环执行动态sql

    标题中的“Kettle循环执行动态SQL”指的是使用Pentaho Data Integration(Kettle)工具来设计数据集成工作流,其中包含动态生成并执行SQL语句的步骤。在数据处理和ETL(Extract, Transform, Load)过程中,动态SQL是...

Global site tag (gtag.js) - Google Analytics