如何将文本文件或其路径作为参数传递并将文件读入oracle存储过程

How to pass a text file or it's path as parameter and read the file into an oracle stored procedure

我想将文件路径(可能在 C 盘或 D 盘或服务器上的任何位置)作为参数传递给 oracle 存储过程并读取其中的文件。有可能吗?我怎样才能做到这一点?使用什么样的变量来这样做?我正在使用 oracle12C。

"Reading a file" - 据我理解这个问题 - 意思是 "using UTL_FILE package"。

UTL_FILE目录(一个指向文件系统目录的Oracle对象,你在硬盘上看到的目录)读取数据时,你的DBA有至

  • 创建目录
  • 授予您(即将使用该过程的用户)read an/or write 对该目录的权限

目录通常位于数据库服务器上;它可以是它的 CD 驱动器,但不完全是你所说的“anywhere”——除非 DBA 愿意创建那么多目录(我怀疑它)。

然后您将能够访问该文件并对其进行处理。


或者,您甚至可以使用 外部 table - 它作为 "ordinary" table 工作,因此您可以编写 SELECT声明直接反对它。在后台,它使用 SQL*Loader。不过,文件必须位于前面提到的目录中。


最后,SQL*Loader 本身:它的好处是您要加载的文件驻留在您的 PC 上,它不必打开服务器。您将创建一个控制文件(说明如何读取该文件),将数据加载到 table 并执行任何您想做的事情。