热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

浅说两种输出Oracle字符文件的方法-mysql教程

Oracle环境中通常使用的文本生成方式传统上有两种,一种是借助原生的sqlplus命令行工具,将数据转出到客户端目录上。注意:sqlpl

Oracle环境中通常使用的文本生成方式传统上有两种,一种是借助原生的sqlplus命令行工具,将数据转出到客户端目录上。注意:sqlpl

归纳几条简单方便的经验之谈吧。前几天,一个同事为做项目和笔者讨论将数据库检索处理结果输出的方法。为了简单明了,笔者按照不同的需求场景准备了两种策略供同事进行选择,记录下来,权作不时之需的留存。

文本文件输出,特别是大数据量文本文件输出,是我们在实际需求领域中经常遇到的场景。文本文件是我们最早接触的文件格式,格式单一,内容简单。但是,也正是因为结构简单,是很多“中间结构文件”通常选择的载体。从最早简单的txt、csv,到现在越来越多出现xml,本质上都是以文本格式文件进行保存。

所谓“中间结构文件”,也就是我们通常所说的接口文件。如果系统之间需要进行大规模数据传输、接入或者交互,双方共同认可的“协议”也就是问题的关键。通过接口文件格式外加自动化上传、定位和检索机制,是可以实现解耦方式的系统间数据交互。

Oracle环境中通常使用的文本生成方式传统上有两种,一种是借助原生的sqlplus命令行工具,将数据转出到客户端目录上。注意:sqlplus命令行系列默认输出是屏幕。另一种是借助utl_file工具包将数据输出到数据库服务端(Server Side)。两种方法各有利弊优缺点,各有适应的场景。下面分别进行讨论。

1、实验环境介绍

笔者使用Oracle 11gR2版本进行测试,具体版本为11.2.0.4。

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE 11.2.0.4.0 Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 – Production

2、Sqlplus的Spool方法

Spool方法是脚本工程师比较常用的策略。思路其实也比较简单:在传统的编程结构中,数据处理结果的输出是有一个导向定位机制的。默认情况下,Sqlplus系工具的输出是屏幕窗口。Spool方法就是重新设置输出方式,将结果文本内容输出到磁盘文件中。

使用spool文件有两个方面需要关注:首先是文件位置。生成的文件,无论是Linux/AIX文件还是Windows系列,都是在客户端所在的计算机(执行程序的机器)上生成。另一个就是文本量限制,无论是使用sqlplus、还是PL/SQL Developer的Command Windows窗口,都会遇到潜在的缓冲区buffer溢出风险。这也就限制了生成文件的大小。

下面我们通过一个简单实验来进行证明,实验数据表结构如下:

SQL> desc test_user;

Name Type Nullable Default Comments

---------------- ------------ -------- ------- ----------------------------------------------------------------------------------------------------------------

OBJECT_ID CHAR(32) String - Object Id

USER_ID CHAR(32) Y String - Unique User ID

FIRSTNAME CHAR(50) Y String - Users first name

LASTNAME CHAR(50) Y String - Users last name

SHORTNAME CHAR(5) Y String - Users short name

推荐阅读
  • 在进行QT交叉编译时,可能会遇到与目标架构不匹配的宏定义问题。例如,当为ARM或MIPS架构编译时,需要确保使用正确的宏(如QT_ARCH_ARM或QT_ARCH_MIPS),而不是默认的QT_ARCH_I386。本文将详细介绍如何正确配置编译环境以避免此类错误。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • 2012年7月30日,语言岛团队宣布其智能记单词软件V0.3.4.554版本正式开源。该版本不仅支持跨平台使用,还引入了多项创新功能,旨在帮助用户更高效地记忆单词。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
author-avatar
卖砖头的小男孩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有