用Oracle的DBMS_OUTPUT包产生CSV文件

FX2N-2AD模块实战:从硬件连接到FROM/TO指令编程详解 本文详细解析FX2N-2AD模拟量输入模块的硬件连接与FROM/TO指令编程技巧,涵盖BFM缓冲存储器配置、梯形图程序设计及工程实战经验。通过实例演示如何实现精准信号采集与数据处理,特别针对PLC系统中的常见故障提供解决方案,助力工业自动化工程师高效完成设备调试与维护。 阅读详情
试过很多产生CSV文件的方法后,发现用Oracle的DBMS_OUTPUT就可以实现,例子代码如下:
1 创建一个数据库表
Drop TABLE VEHICLE;
Create TABLE VEHICLE (
MAKE VARCHAR2(256) NOT NULL,
MODEL VARCHAR2(256),
REGISTRATION_NO NUMBER(15) NOT NULL primary key,
AGE NUMBER(2,1) NOT NULL,
CATEGORY VARCHAR(1) NOT NULL,
MILAGE NUMBER(15,2) NOT NULL,
LAST_SERVICE_DATE DATE NOT NULL
);
2.创建PL/SQL包
-- Package Header Definition
CREATE OR REPLACE PACKAGE ISS_CSV IS
PROCEDURE WCSV(
inRegStart IN NUMBER,
inRegStop IN NUMBER,
inFSep IN VARCHAR2 :=',',
inRSep IN VARCHAR2 :='/n'
);
PROCEDURE AddRec
(startNum IN NUMBER,
 endNum IN NUMBER
);
PROCEDURE DelRec
(startNum IN NUMBER,
 endNum IN NUMBER
);
--PROCEDURE CreateSampTab(tabName IN VARCHAR2);
END;
/
-- Package Body Definition
CREATE OR REPLACE PACKAGE BODY ISS_CSV
IS PROCEDURE WCSV(
inRegStart IN NUMBER,
inRegStop IN NUMBER,
inFSep IN VARCHAR2,
inRSep IN VARCHAR2
) IS
cursor p_cursor is SELECT MAKE||inFSep||MODEL||inFSep||REGISTRATION_NO||inFSep||AGE||inFSep||CATEGORY||
inFSep||MILAGE||inFSep||LAST_SERVICE_DATE||inRSep strRet FROM vehicle WHERE registration_no>=inRegStart
and registration_no<=inRegStop;
c1rec p_cursor%rowtype;
p_errorcode NUMBER :=0;
start_time TIMESTAMP;
right_now TIMESTAMP;
F1 UTL_FILE.FILE_TYPE;
BEGIN
F1 := UTL_FILE.FOPEN('c:/temp','THOMAS.CSV','W',32767);
start_time := SYSTIMESTAMP;
-- OPEN p_cursor;
for c1rec in p_cursor loop
   UTL_FILE.PUT_LINE(F1,c1rec.strRet);  
end loop;
UTL_FILE.FCLOSE(F1);
-- CLOSE p_cursor;
right_now := SYSTIMESTAMP;
dbms_output.put_line(to_char(right_now - start_time));
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN;
WHEN UTL_FILE.INVALID_PATH THEN
DBMS_OUTPUT.PUT_LINE('INVALID PATH');
WHEN UTL_FILE.INVALID_MODE THEN
DBMS_OUTPUT.PUT_LINE('INVALID MODE');
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
DBMS_OUTPUT.PUT_LINE('INVALID FILEHANDLE');
WHEN UTL_FILE.INVALID_OPERATION THEN
DBMS_OUTPUT.PUT_LINE('INVALID OPERATION');
WHEN UTL_FILE.READ_ERROR THEN
DBMS_OUTPUT.PUT_LINE('READ ERROR');
WHEN UTL_FILE.WRITE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('WRITE ERROR');
WHEN UTL_FILE.INTERNAL_ERROR THEN
DBMS_OUTPUT.PUT_LINE('INTERNAL ERROR');
WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE(SQLERRM);
   p_errorcode:= SQLCODE;
   dbms_output.put_line('Error, Rollback'||to_char(p_errorcode));
END;
-- Insert Procedure --
PROCEDURE AddRec
(startNum IN NUMBER
,endNum IN NUMBER
) IS
i number:=startNum;
j number:=endNum;
BEGIN
dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
While i<=j Loop
  INSERT INTO VEHICLE (REGISTRATION_NO,MAKE,MODEL,AGE,CATEGORY,MILAGE,LAST_SERVICE_DATE)
  VALUES(i,'Oracle 10g R2 -Key'||i,'Thomas Kyte Oracle',3,'A',1000,SYSDATE);
  i:=i+1;
End Loop;
commit;
dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
END;
-- Delete Procedure --
PROCEDURE DelRec
( startNum IN NUMBER
 , endNum IN NUMBER
) IS
i number:=startNum;
j number:=endNum;
BEGIN
dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
Delete From VEHICLE Where REGISTRATION_NO>=i and REGISTRATION_NO<=j;
dbms_output.put_line(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') );
Commit;
END;
--Create Sample Table --
--PROCEDURE CreateSampTab(tabName IN VARCHAR2
--) IS
--BEGIN
--Drop TABLE VEHICLE;
--Create TABLE VEHICLE (
--MAKE VARCHAR2(256) NOT NULL,
--MODEL VARCHAR2(256),
--REGISTRATION_NO NUMBER(15) NOT NULL primary key,
--AGE NUMBER(2,1) NOT NULL,
--CATEGORY VARCHAR(1) NOT NULL,
--MILAGE NUMBER(15,2) NOT NULL,
--LAST_SERVICE_DATE DATE NOT NULL
--);
--EXCEPTION
--WHEN OTHERS THEN
--    dbms_output.put_line('Error When creating Sample Table');
--END;
END;
/
 
 
3. 添加测试数据
  SQL> EXEC ISS_CSV.AddRec(1,1000000);
 
4. 生产CSV文件
  设置参数UTL_FILE_DIR,否则,不能生产CSV文件。
    SQL> ALTER SYSTEM SET UTL_FILE_DIR = 'c:/temp' scope =spfile;
  SQL> SHUTDOWN IMMEDIATE;
  SQL> STARTUP;
  SQL> EXEC ISS_CSV.WCSV(1,1000000);
 
读者可以根据需要做一定修改。
Vue3 - Vite运行打包时Uncaught ReferenceError: process is not defined(解决vue3+vite报错process is not defined) vue3,vite,vue3+vite报错,process,UncaughtReferenceError:processisnotdefined,浏览器控制台报错processisnotdefined解决方法,vue3如何解决报错,vite报错怎么办,前端打包UncaughtReferenceError:processisnotdefined,npmrunbuild打包报错,vite打包时出现错误,vue3打包运行找不到process,热更新会报错UncaughtRefer 阅读详情

相关推荐

手把手教你用神经网络优化电机控制:从Simulink仿真到实际部署

本文提供了一套完整的工程实践指南,详细讲解了如何将神经网络应用于电机控制,从Simulink仿真建模、轻量级网络设计,到关键的模型量化与代码生成,最终实现向DSP/FPGA硬件的实际部署。文章直面实时性、精度与资源限制等核心工程挑战,为工程师提供了从理论到落地的清晰路径和实用避坑策略。

weixin_29246195的博客 226

1.ORACLE通过UTL_FILE包导出CSV文件

概述 在PL/SQL中,UTL_FILE包提供了文本文件输入和输出互功能。也就是说我们可以通过该包实现从操作系统级别来实现文件读取输入或者是写入到操作系统文件。通过该包也可以将其他系统的数据加载到数据库中。如加载web服务器日志,用户登录数据库日志乃至Oracle日志文件等等。本文主要描述了UTL_FILE的功能以及通过实例演示并理解这个包下相关过程函数的用法。 官网地址为https://docs...

ciqingloveless的博客 3046

python机器人编程——用python实现一个写字机器人

本篇我们构建一个可以跟人一样写字的机器人python软件。实现如下功能:打开一个写字板,人类在屏幕上写或画出任意形状,机器人同步在纸面上画出和人类一样的形状,就好像人类在远程操控机械臂,又或是机械臂是人的另一只手。这个软件是可以扩展的,如果连上互联网,可以实现人在北京写了一行字,在上海的机器臂同时也在自己的本子上写了一行字。

JAMES费的空间 7992

利用存储过程将Oracle远程数据库数据以.csv的格式批量导出

随着清单数量和数据量的增加,手动使用PL/SQL导出数据到CSV文件变得耗时且低效。为此,作者通过研究实现了自动化导出数据的方法,利用存储过程定时执行脚本并直接导出清单。具体实现包括两个存储过程:PRC_SQL_TO_CSV和PRC_DATA_TO_CSV。PRC_SQL_TO_CSV负责将查询结果以CSV格式导出,而PRC_DATA_TO_CSV则通过读取表名文件,动态生成查询语句并调用PRC_SQL_TO_CSV实现多表数据的批量导出。该方法显著提高了数据导出的效率,减少了手动操作的时间成本。

cizhao3600的博客 1559

单细胞测序数据读取实战指南:从入门到精通

本文提供了单细胞测序数据读取的实战指南,涵盖从标准10X Genomics格式到通用表达矩阵及RDS文件的读取方法。文章重点解析了数据读取的核心步骤、常见问题解决方案及进阶技巧,旨在帮助用户夯实数据分析基础,确保后续分析流程的准确性。

weixin_29095587的博客 460

ZYNQ:【1】深入理解PS端的TTC定时器(Part1:原理+官方案例讲解)

基于UG585详细讲解其中TTC的原理和使用案例。

Alex的技术博客 7887

oracle10g sql语句,C7ans-oracle10g-sql语句经典实例3

C7ans2用if语句求x2+4x+3=0的根。DECLAREa number;b number;c number;x1 number;x2 number;d number;BEGINa:=1;b:=4;c:=3;d:=b*b-4*a*c;IF a=0 THENx1:=-c/b;dbms_output.put_line(‘只有一个平方根’ || to_char(x1));ELSIF d<0 ...

weixin_39753747的博客 149

VHDL六层电梯控制器及仿真

六层电梯电梯 设计要求:设计一个六层电梯控制系统要求有超载、关门中断、提前关门清除报警信电梯外人的上升请求信号,电梯外人的下降请求信号, 电梯外人上升请求信号显示电梯外人下降请求信号显示到达楼层信号 设计思路:输入有clk时钟信号(频率为2Hz) full,deng,quick,clr超载、关门中断、提前关门清除报警c_u1,c_u2,c_u3,c_u4,c_u5电梯外人的上升请求c_d2,c_d3,c_d4,c_d5,c_d6 电梯外人的下降请求 d1,d2,d3,d4,d5,d6电梯内人的...

QQ_778132974的博客 1709

MySQL必知必会(4至14章)

第四章:检索数据 第五章:排序检索数据

qq_38870388的博客 635

【Python】-- 趣味代码 - 发牌游戏

Python -- 趣味代码 - 发牌游戏

银尘博客 351

uni-app - 解决 H5 微信公众号授权登录后,无法回退到 “上一页“ 的问题(微信登录后如何返回到触发它的那一页?无法通过 uni.navigateBack() 返回到前一页的问题?)详细教程

uniappH5微信登录重定向后无法返回到原来进入前的页面了,uni-appH5微信浏览器中授权微信登录后,无法正常回退问题,uniappH5微信登录后怎么返回上一页,uniapp公众号登陆后使用uni.navigateBack()回不去上一页,uniapp微信登录成功后返回页面后一直自动刷新页面,uniapph5授权成功后如何返回上一页,uniappH5微信登录后怎么返回到触发它的那一页去,公众号h5在授权后如何跳转回到刚进入时的页面,微信公众号H5网页返回上一页疑问,解决微信H5静默授

🏆 前端领域优质创作者 7715

oracle生成文件包,用Oracle的DBMS_OUTPUT包产生CSV文件

-- Package Header DefinitionCREATE OR REPLACE PACKAGE ISS_CSV ISPROCEDURE WCSV(inRegStart IN NUMBER,inRegStop IN NUMBER,inFSep IN VARCHAR2 :=',',inRSep IN VARCHAR2 :='\n');PROCEDURE AddRec(startNum IN...

weixin_33745006的博客 293

跨越边界:用MessagePipe实现无缝的进程间通信

MessagePipe是一个用于.NET平台的消息传递库,它专注于简化异步消息处理和进程间通信。通过提供一系列易于使用的API,开发者可以快速搭建起稳定可靠的通信管道,支持多种传输协议(如TCP、Unix域套接字等),并内置了序列化/反序列化功能,使得跨语言和跨平台的数据交换变得轻而易举。为了方便序列化和反序列化操作,我们需要为每种消息定义对应的类或结构体,并标记属性。这样可以确保消息在发送方和接收方之间正确无误地传递。[Key0set;[Key1set;

墨夶的博客 816

从oracle导出成csv文件

从oracle导出csv文件主要有两种方法方法1、使用oracle server developer自带的功能在数据库中找到想要导出的表,右键选择导出。去掉勾选的导出DDL,把格式改成csv,选择相应的编码方式下一步之后,还可以添加where子句。按提示操作即可。方法2、使用oracle的内建包UTL_FILE效率比较此方法导出方便,不用什么操作,但是导出速度上较慢,导出2亿多条的70GB数据大约...

cliviabao的博客 2万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Oracle 将数据导出到CSV(Excel)文件的方法

Oracle 快速将数据导出到CSV(Excel)文件的方法及性能 1,我们工作中有需要将线上数据导出到excel给客户分析/查看的情况,如下是方法介绍情况: 工作中有需要将线上数据导出到excel给客户分析/查看的情况,如下是方法介绍情况: 方法 1分钟导出的数据量 ---- 适用于 utl_file读写文件包 300万 大量导出时 plsql developer->export query result 10万 小量导出时 – – excel连接数据库 1万

tnb_ml的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Oracle中表数据行数过多导出为CSV文件的方法

需求:需要将Oracle数据库中的一个表导出为CSV文件,但是表比较大,共有29488763条数据,不能通过简单的PLSQL查询在转成CSV文件的方法,该表导出的DMP文件,约有2.3G,导出的CSV文件有3.4G。解决思路:写一个存储过程,把sql查询出来的结果使用格式转换的方式转换成CSV格式的文件。如下:----Oracle中表数据行数过多导出为CSV文件的方法如下:---登录system用...

doudou311的专栏 5793

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Oracle将数据导出到CSV文件

转自:http://blog.youkuaiyun.com/huangzhijie3918/article/details/72732816 工作中有需要将线上数据导出到excel给客户分析/查看的情况,如下是方法介绍情况: utl_file读写文件包 ,1分钟导出的数据量 大概是300万 适用于大量导出时 spool 循环打印 ,适用小型数据量时。     利用utl_file导出.csv文件.

Jane 1573

ORACLE导出CSV文件

前言ORACLE的导出功能会经常使用,也同样经常会有需求进行导出为CSV文件,用于往别的数据库进行迁移,本次实例及在ORACLE实现导出CSV文件操作。实现①创建导出目录,并授权给需执行导出CSV文件的用户读写权限sqlplus / as sysdba SQL &gt; create or replace directory OUT_PATH as '/home/wenxuechao/csv_fi...

文学超的博客 7898

oracle批量导出成csv文件路径,Oracle批量导出表数据到CSV文件

需求:把oracle数据库中符合条件的N多表,导出成csv文本文件,并以表名.csv为文件名存放。 实现:通过存储过程中UTL_FILE函数来实需求:把Oracle数据库中符合条件的N多表,导出成csv文本文件,并以表名.csv为文件名存放。实现:通过存储过程中UTL_FILE函数来实现。导出的csv文件放入提前创建好的directory中。Oracle AWR报告生成与查看在CentOS 6.4...

weixin_34486033的博客 609

Oracle导出CSV文件

-- 建立存储过程 CREATE OR REPLACE PROCEDURE SQL_TO_CSV ( P_QUERY IN VARCHAR2, -- PLSQL文 P_DIR IN VARCHAR2, -- 导出的文件放置目录 ...

dfg6565的博客 213

Oracle SQL Developer 使用指南(类比 VS Code):dbms_output.put_line()

Oracle SQL Developer快速上手指南:从VSCode到数据库开发

木木的学习笔记 459

oracle 导出csv文件

用oracle的UTL_FILE包导出表数据为CSV文件步骤 执行该存储过程之前,UTL_FILE的目录必须以sysdba的用户创建,然后授权给使用的用户,代码中的MYDIR通过下面方法创建: 首先,以sysdba用户登录。 其次,创建目录,如:CREATE DIRECTORY MYDIR AS 'c:\oraload\'; 文件的输出目录只能是在oracle所在的服务器上,oracle用户有权限...

iteye_19849的博客 628

oracle将数据导出到CSV文件-ok

oracle将数据导出到CSV文件-ok

u013737399的博客 6598

ORACLE导出CSV格式的数据

虽然使用一些可视化工具如navicate,plsql也可以导出CSV文件,但是对于一些场景简单的导出并不适用。如:想把表中的数据按某个字段分多个文件导出,以下为实现过程: 新建一个导出工具SP,传入查询SQL、导出目录、文件名称即可导出。 CREATE OR REPLACE PROCEDURE SQL_TO_CSV ( P_QUERY IN VARCHAR2, -- PLSQL文 P_DIR IN VARCHAR2, -- 导出的文件放置目录 P_FILENAME IN VARCHAR2 --

gill__hong的博客 1161
上一篇: 使用WMSYS.WM_CONCAT函数实现行列转换
下一篇: 汉字数字混合排序
suncrafted
博客等级 码龄24年 103粉丝 30原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值