【发布时间】:2020-10-04 12:22:48
【问题描述】:
我想将文件路径(可能位于 C 或 D 驱动器或服务器上的任何位置)作为参数传递给 oracle 存储过程并读取其中的文件。有可能吗?我怎样才能做到这一点?使用什么样的变量来做到这一点?我正在使用oracle12C。
【问题讨论】:
标签: oracle file stored-procedures oracle12c
我想将文件路径(可能位于 C 或 D 驱动器或服务器上的任何位置)作为参数传递给 oracle 存储过程并读取其中的文件。有可能吗?我怎样才能做到这一点?使用什么样的变量来做到这一点?我正在使用oracle12C。
【问题讨论】:
标签: oracle file stored-procedures oracle12c
“读取文件” - 据我理解的问题 - 意思是“使用UTL_FILE 包”。
当UTL_FILE 从目录(指向文件系统目录的 Oracle 对象,即您在硬盘上看到的目录)读取数据时,您的 DBA 必须
read 和/或 write 对该目录的权限目录通常位于数据库服务器上;它可以是它的C 或D 驱动器,但并不完全如您所说的“任何地方” - 除非 DBA 愿意创建那么多目录(我对此表示怀疑)。
然后您将能够访问该文件并对其进行处理。
或者,您甚至可以使用外部表 - 它作为“普通”表工作,因此您可以直接针对它编写SELECT 语句。在后台,它使用 SQL*Loader。不过,文件必须位于前面提到的目录中。
最后,SQL*Loader 本身:它的好处是您要加载的文件驻留在您的 PC 上,而不必在服务器上。您将创建一个控制文件(其中说明如何读取文件),将数据加载到表中并做任何您想做的事情。
【讨论】: