oracle - 如何在plsql中以动态方式从多个表中导出数据
问题描述
我有一个每天创建多个表的 plsql SP,但是表的数量并不总是相同的,但是,生成的表的名称中有一个预定义的模式。
我正在尝试创建一个 plsql SP,它将这些表导出到 csv 或 excel 文件,基于带有生成表名称的列表输入。
有什么想法可以实现这一点而不是使用 PLSQL,或者有什么有用的方法可以用它来实现吗?
提前致谢
解决方案
我认为这个问题非常抽象,可以有很多解决方案。如果您想从数据创建 Excel,可以尝试以下解决方案。
首先你需要一个工具来创建一个excel文件。Anton Scheffer 开发了一个包,您可以使用它轻松地从光标创建 Excel 文件。看看:使用 PL/SQL 创建一个 Excel 文件。
接下来,您可以确定创建的表并创建一个查询字符串,您可以将其作为参数传递到query2sheet
Anton 包的过程中。您可以在user_tables
视图中找到的所有表格。
所以你的代码可能看起来像:
for rec in (select * from user_tables where 1=1 /* or condition you need to filter the correct tables*/)
loop
-- as_xlsx - is a package created by Anton Scheffer
as_xlsx.query2sheet( 'select * from '||rec.table_name );
-- MY_DIR is a database Directory that you have to create
as_xlsx.save( 'MY_DIR', rec.table_name||'.xlsx' );
end loop;
编辑:
如果你想创建一个 csv 文件,那么你可以使用 William Robertson 开发的一个包,Ref cursor to CSV converter。用法与 Excel 包非常相似。
推荐阅读
- regex - RegEx Pattern - 如何从一行中提取 N 元素?
- haskell - Haskell String to List String 按空格分割
- docker - 使用持久注册表文件在 Kubernetes 中运行 Filebeat?
- sql - 在 Oracle Sql 中查找具有公分母的重复值
- tensorflow - tf.train.GradientDescentOptimizer() 的 tf.complex64 类型无效
- php - 安全地设置 GOOGLE_APPLICATION_CREDENTIALS
- docker - Apache kafka 无效接收大小
- vue.js - 在浏览器上单击后退按钮后如何在 Vue 中重置状态
- zsh - zsh中“bat”的选项卡完成时“找不到命令”
- symfony - 在 Symfony 3.2 中运行控制台命令