我在Oracle数据库中有一个表。我必须从Oracle表创建一个复杂的电子表格结构。我正在寻找实现这一目标的最佳方法。我可以使用SSIS或使用一些Oracle实用程序来创建电子表格。
非常感谢任何帮助。
提前致谢。
此致 DIBS
答案 0 :(得分:7)
我想问题是,你的“复杂结构”有多复杂?
Oracle SQL Developer或Quest TOAD等编程IDE具有向导将数据表导出为CSV文件的向导。
如果要连接多个表中的数据,可以使用视图,甚至编写SQL语句
select e.ename||','||d.dname
from emp e
join dept d on ( e.deptno = d.deptno )
/
(重新说明列通常可以包含逗号的数据,因此您可能希望使用更不寻常的字符 - 或字符集 - 作为分隔符。)
另一种快速做事的方法是使用SQL * Plus的HTML报告功能。许多电子表格工具可以在没有抓取的情况下导入结构良好的HTML和XML。 Find out more.
如果你想要压缩层次结构或更复杂的东西,你可能需要进入PL / SQL。手动方法将使用上述语句的变体来使用UTL_FILE:
declare
csv_fh utl_file.filetype;
begin
csv_fh := utl_file.fopen('C:\temp', 'data_export.csv', 'W');
for r in ( select e.ename, d.dname
from emp e
join dept d on ( e.deptno = d.deptno )
) loop
utl_file.put_line(csv_fh, r.ename||'|'||r.dname;
end loop;
utl_file.fclose(csv_fh);
end;
如果要专门导出到Excel(即.XLS文件),那么您需要超越Oracle内置插件。直接从PL / SQL导出到Excel的常用解决方案是Tom Kyte用于SYLK api的OWA_SYLK包装器。 Find out more.
这适用于单个工作表。如果要导出到多个工作表,可以使用几种替代解决方案。
Sanjeev Sapre有他的get_xl_xml包。顾名思义,它使用XML进行转换。 Find out more。
Jason Bennett编写了一个生成Excel XML文档的PL / SQL对象。 Find out more
答案 1 :(得分:3)
您可以使用ORA_EXCEL包创建结构复杂的Excel文档。 ORA_EXCEL具有基本但功能强大的组件,您可以使用它们来构建复杂的Excel文件。
答案 2 :(得分:0)
我要尝试的第一件事就是将我想要的值转储为CSV。 Excel应该能够很好地导入,并且通常更容易手动调整Excel公式等,而不是尝试自动化它。如果您使用的是Oracle SQLDeveloper,则可以选择将结果导出为CSV。如果您正在使用SQL * Plus,则可以使用set colsep ,
使Oracle使用逗号分隔列。但是,如果您使用的是SQL * Plus,则可能需要进行一些格式调整。
答案 3 :(得分:0)
答案 4 :(得分:0)
设置linesize 4000 pagesize 0 colsep','
上的修剪工具上的三角形设置spool c:/file.xls
从tableName中选择*;
假脱机;
这将在c盘中生成你的file.xls。您可以提供任何地址,如果您想要列标题,请删除"标题为"子句并将pagesize设置为某个数值。