如何在plsql中以动态方式从多个表中导出数据
How to export data from multiple tables in a dynamic fashion in plsql
我有一个每天创建多个表的 plsql SP,但是表的数量并不总是相同,但是,生成的表的名称中有一个预定义的模式。
我正在尝试创建一个 plsql SP,它根据带有生成表名称的列表输入将这些表导出到 csv 或 excel 文件。
关于实现这个而不是使用 PLSQL 的任何想法,或者是否有任何有用的方法来实现它?
提前致谢
我觉得这个问题很抽象,可以有很多种解法。如果您想从数据中创建 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 包非常相似。
我有一个每天创建多个表的 plsql SP,但是表的数量并不总是相同,但是,生成的表的名称中有一个预定义的模式。
我正在尝试创建一个 plsql SP,它根据带有生成表名称的列表输入将这些表导出到 csv 或 excel 文件。
关于实现这个而不是使用 PLSQL 的任何想法,或者是否有任何有用的方法来实现它?
提前致谢
我觉得这个问题很抽象,可以有很多种解法。如果您想从数据中创建 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 包非常相似。