Oracle sql结果导出到DBF文件
我想通过 PL/SQL 脚本将数据从 Oracle 表导出到 *.dbf 文件(如 Excel)。有可用的代码吗?
I would like to export data from a Oracle table into *.dbf file (like excel) through PL/SQL scripts. Are there any codes available?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有多种不同的方法可以做到这一点。最简单的方法是使用提供此功能的 IDE,例如 SQL Developer 或 TOAD。
如果您想从 PL/SQL 调用它,则没有内置 Oracle 函数。然而,使用 UTL_FILE 构建可以写出值分隔记录的东西相对简单。这些可以在 Excel 中找到。
请注意,如果导出的数据包含逗号,默认分隔符 -
,
(逗号是 .CSV 中的“C”) - 将导致问题。因此,您需要使用数据导入向导,而不是右键单击“打开方式”...顺便说一句,使用
.dbf
后缀可能不是一个好主意。在 Oracle 文件系统中,假定的含义是数据库文件 - 即数据库基础结构的一部分。这只是一个惯例,但没有必要让人们感到不必要的困惑。首选的替代方案包括.csv
、.dmp
或.exp
。编辑
如果您的兴趣只是导出数据以传输到另一个 Oracle 数据库,那么您应该考虑使用数据泵实用程序。它带有一个 API,因此可以从 PL/SQL 中使用。或者,我们通过使用 DataPump 驱动程序声明的外部表卸载数据。
There are a number of different ways to do this. The easiest way is to use an IDE like SQL Developer or TOAD, which offer this functionality.
If you want to call it from PL/SQL, then then are no built-in Oracle functions. However, it is relatively straightforward to build something using UTL_FILE which can write out value separated records. These can be picked up in Excel.
Note that the default separator -
,
(comma being the "C" in .CSV) - will cause problems if your exported data contains commas. So you will need to use the Data Import wizard rather than a right-click Open With ...Incidentally, it is probably a bad idea to use the
.dbf
suffix. In an Oracle file system the presumed meaning is database file - i.e. part of the database's infrastructure. This is just a convention, but there is no point in needlessly confusing people. Perferred alternatives include.csv
,.dmp
or.exp
.edit
If your interest is just to export data for transferring to another Oracle database then you should look at using the Data Pump utility. This comes with an API so it can be used from PL/SQL. Alternatively we unload data through external tables declared with a DataPump driver.
您还可以考虑使用 Oracle 的外部表功能。这本质上允许您将 CSV 文件映射到“虚拟”表,然后您可以将其插入其中(以及文件)。
Oracle 外部表概念指南
You could also consider using the External Tables feature of Oracle. This essentially allows you to map a CSV file to a 'virtual' table and the you can insert into it (and therefore the file.)
Oracle External Tables Concept Guide