如何将文本文件或其路径作为参数传递并将文件读入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
对该目录的权限
目录通常位于数据库服务器上;它可以是它的 C
或 D
驱动器,但不完全是你所说的“anywhere”——除非 DBA 愿意创建那么多目录(我怀疑它)。
然后您将能够访问该文件并对其进行处理。
或者,您甚至可以使用 外部 table - 它作为 "ordinary" table 工作,因此您可以编写 SELECT
声明直接反对它。在后台,它使用 SQL*Loader。不过,文件必须位于前面提到的目录中。
最后,SQL*Loader 本身:它的好处是您要加载的文件驻留在您的 PC 上,它不必打开服务器。您将创建一个控制文件(说明如何读取该文件),将数据加载到 table 并执行任何您想做的事情。
我想将文件路径(可能在 C 盘或 D 盘或服务器上的任何位置)作为参数传递给 oracle 存储过程并读取其中的文件。有可能吗?我怎样才能做到这一点?使用什么样的变量来这样做?我正在使用 oracle12C。
"Reading a file" - 据我理解这个问题 - 意思是 "using UTL_FILE
package"。
当UTL_FILE
从目录(一个指向文件系统目录的Oracle对象,你在硬盘上看到的目录)读取数据时,你的DBA有至
- 创建目录
- 授予您(即将使用该过程的用户)
read
an/orwrite
对该目录的权限
目录通常位于数据库服务器上;它可以是它的 C
或 D
驱动器,但不完全是你所说的“anywhere”——除非 DBA 愿意创建那么多目录(我怀疑它)。
然后您将能够访问该文件并对其进行处理。
或者,您甚至可以使用 外部 table - 它作为 "ordinary" table 工作,因此您可以编写 SELECT
声明直接反对它。在后台,它使用 SQL*Loader。不过,文件必须位于前面提到的目录中。
最后,SQL*Loader 本身:它的好处是您要加载的文件驻留在您的 PC 上,它不必打开服务器。您将创建一个控制文件(说明如何读取该文件),将数据加载到 table 并执行任何您想做的事情。