如何在plsql中以动态方式从多个表中导出数据

时间:2019-07-09 14:12:15

标签: oracle dynamic plsql export-to-csv export-to-excel

我有一个plsql SP,它每天创建多个表,但是表的数量并不总是相同的,但是生成的表的名称具有预定义的模式。

我正在尝试创建一个plsql SP,该SPsql SP将基于生成的表名称的列表输入将这些表导出到csv或excel文件中。

有什么实现此目标而不是使用PLSQL的想法,还是有任何有用的方法来实现这一目标?

预先感谢

1 个答案:

答案 0 :(得分:1)

我认为这个问题非常抽象,可以有很多解决方案。如果要根据数据创建Excel,可以尝试以下解决方案。

首先,您需要一个工具来创建excel文件。 Anton Scheffer开发了一个程序包,可用于从光标轻松创建Excel文件。看看:Create an Excel-file with PL/SQL

接下来,您可以确定已创建的表并创建查询字符串,您可以将其作为参数传递到Anton软件包的query2sheet过程中。您可以在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软件包非常相似。