2013-04-22 58 views
0

请帮助我创建一个过程,将数据从oracle数据库导出到指定路径为.csv文件从另一个表中获取学习名称。创建.csv输出的步骤

QUERY:select * from enrollment where study_name = 'FTY67' ;

我必须与所有studynames同一个数据库的另一个表(研究)。

有没有什么方法可以创建程序,从研究表中取出学习名称并重复此过程为所有研究创建.csv文件?

阅读一些在互联网上的文章,但没有发现任何与此相关的内容。 请帮忙。

+0

中所引用的线程答案只有有限的用途,因为包必须由管理员启用,通常是由于安全原因而禁用。然而有一种方法可以在客户端使用常规的sql命令来做到这一点,因为这可能是更常见的szenario。 – Devolus 2013-04-22 11:00:02

+0

如果您想要回答重复,请立即前往@Devolus。在我的公司,我们每天使用UTL_FILE数百次,而没有人使用spool来做到这一点......我不确定这是“更常见”。 – Ben 2013-04-22 12:48:19

+0

在你的公司你有权访问服务器? – Devolus 2013-04-22 14:29:24

回答

0

你应该看看spool和set命令。由于数据库通常在远程服务器上运行,因此无法将文件写入本地计算机。为了实现这个目标,yu必须在终端中禁用某些特性的情况下编写一个sql,然后将结果缓存到可以访问的文件中。

像这样的东西可能让你开始:

set term off colsep ";" pause off 
spool myfile 
select * from x; 
spool off 
exit 

有关的选项概述您可以用SET使用参考Oracle文档浏览:http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12040.htm

有了正确的命令集,你可以创建CSV文件。

上述设置命令只是您可能需要的一些命令,但您可能需要addtional参数才能使CSV可用。

最好在file.sql写这篇文章,并用sqlplus运行它:

sqlplus [email protected] @file