网站首页 > 技术文章 正文
使用Oracle的存储过程导出某张表的数据到文本
前言
某天接到一个小需求,导出oracle某张表的数据到文本,要求表的数据结构未知(其实想多张表导出哈),如果不考虑效率、导出一张表还是很容易的,写一条sql差不多就行了,所以想到了用utl_file写个存储过程实现,网上百度了一下并没有直观的参考资料,于是决定将自己整理的干货代码分享给大家。
上代码:
图片版(为了手机上更好的阅读提供了图片版)
使用Oracle的存储过程导出某张表的数据到文本
代码版(手机排版乱但可以直接粘贴做测试)
createorreplaceprocedure dump_data_to_file(tbName invarchar2,
p_code out integer,
p_err out varchar2) is
outfile utl_file.file_type;
v_col varchar2(4000);
v_sql varchar2(4000);
row_result varchar2(4000);
c1 sys_refcursor;
begin
for c_col in (select column_name from user_tab_columns where table_name=tbName order by column_id)
--for循环游标,列名和等号“=”后面可以使用变量,但是sql本体无法使用变量,即无法使用动态sql,想用的话得使用open for游标语法。
loop
v_col:=v_col||'||chr(44)||'||c_col.column_name; --输出列名,chr(44)为逗号的ascii码
end loop;
v_sql := 'select '||substr(v_col,12)||' from '||tbName; --输出sql的字符串,用substr函数格式化输出,v_tab变量在这里带入,控制表名
outfile := utl_file.fopen('UTL_EXP_TEST',tbName||'.sql','w'); //UTL_EXP_TEST : 定义好的目录
open c1 for v_sql;
loop
fetch c1 into row_result;
exit when c1%notfound;
utl_file.put_line(outfile,row_result);
end loop;
close c1;
utl_file.fclose(outfile);
exception
when others then
p_code := sqlcode;
p_err := sqlerrm;
end dump_data_to_file;
测试
需要输入想要导出的tbName表名即可, 后续可以改进导出所有表或指定多张表导出(需要自己动手尝试哈~,本次只是抛砖引玉)。
感言
方式千千万,分享给需要的童鞋们,共勉~~~
猜你喜欢
- 2024-10-16 oracle数据库得备份方式 oracle数据库三种备份方式
- 2024-10-16 SmartSQL一款方便快捷的数据库文档查询、导出工具
- 2024-10-16 从零开始学习Oracle之数据备份与还原
- 2024-10-16 Oracle11g中使用expdp导sys用户下的表时报错ORA-39166/ORA-31655
- 2024-10-16 Oracle SQLPlus导出数据到csv文件
- 2024-10-16 Oracle 转换成 MySQL oracle转mysql sql语句
- 2024-10-16 ORACLE 体系 - 14 oracle体系结构思维导图
- 2024-10-16 记一次生产数据库Oracle数据泵导出报ORA-31617错误的解决过程
- 2024-10-16 超级好用的数据库表结构导出工具 数据库导出表结构语句
- 2024-10-16 记Oracle中快速获取表及其各个字段注释的方法
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 566℃Oracle分析函数之Lag和Lead()使用
- 564℃几个Oracle空值处理函数 oracle处理null值的函数
- 550℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 545℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 543℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 536℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 518℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)