UTL_FILE 加载带有通配符扩展名的递归文件夹和文件

詹卡罗

晚上好,

我将加载位于 oracle 本地路径中但位于不同文件夹中的 xls 文件

并在文件夹中多年和子文件夹中的几个文件。加载将是总计、删除和重新加载。

但是我的文件夹结构有问题,我想知道 UTL_FILE 包是否可以完成我的工作。

文件夹的结构类似于:

人(目录)

------->2020

------->2021

------------>(文件)persona_0.xls

------------->(文件)persona_new.xls

在此处输入图片说明

我能怎么做 :

1-a 循环遍历该文件夹结构。

2-我如何使用文件的通配符读取不同的文件 * person_ *

非常感谢,

感谢任何帮助或示例

你好。

数据库

UTL_FILE 仅适用于 DIRECTORY 对象,这些对象是指向数据库服务器上文件夹的预定义指针。您不能在文件名中使用通配符或遍历目录树。您不能使用 UTL_FILE 从客户端系统加载文件,除非(在某些情况下但不是全部)它们位于对数据库可见的共享网络驱动器上。

从文档:https : //docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS069

假设用户对目录对象 USER_DIR 具有 READ 和 WRITE 访问权限,则用户可以打开位于 USER_DIR 描述的操作系统目录中的文件,但不能打开该目录的子目录或父目录中的文件。

我过去看到这种处理的唯一方法是

  1. 将所有文件放在数据库服务器上的同一目录中
  2. 有一个 shell 脚本,它在数据库服务器操作系统列表上运行并遍历目录中的文件,然后使用 SQL*Plus 运行 SQL 脚本以调用每个文件名作为输入的存储过程。然后,存储过程将打开目录中的文件并摄取数据。当存储过程和 SQL 脚本完成后,控制将返回到 shell 脚本,该脚本将循环到列表中的下一个文件并重复。

或者

  1. 如果所有文件都为同一目标表提供数据并具有相同的记录结构,请将它们全部放在同一目录中并创建一个同时指向所有文件的外部表。您仍然必须在外部表定义中明确命名每个文件 - 没有通配符。然后运行一个存储过程,对整个数据集一次性执行任何摄取操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Oracle UTL_FILE读取CSV文件行

尝试使用utl_file方法读取文件

使用 UTL_FILE ORACLE PACKAGE 导入 xls、xlsx 文件

UTL_FILE:无法创建新文件

PL/SQL - UTL_FILE 文件的物理位置

无法使用外部表读取文件或使用PL / SQL使用UTL_FILE写入文件

utl_file fopen-我无法将文本写入文件

我在哪里可以使用UTL_FILE从我的oracle数据库访问文件?

从Oracle表中整体提取UTL_FILE的BLOB文件,有些压缩,有些则没有

如果在Oracle SQL中将数据写入文件后未关闭UTL_FILE,则数据不一致的原因

我如何使用Oracle utl_file编写图像Clob

使用附加模式的UTL_FILE创建重复的标头

授予对UTL_FILE方法的正确权限

使用带有文件类扩展名的 File.listFiles()

列出所有仅扩展名的文件和文件夹

删除所有子文件夹和文件,但父文件夹中的特定扩展名除外

java中带有扩展名和通配符搜索的递归文件搜索

如何从多个文件夹复制带有文件扩展名的文件?

只匹配目录中的文件夹,忽略任何带有扩展名的文件

查看文件夹中是否包含某些带有某些扩展名的文件

如何批量更改文件夹中的所有扩展名。(带有目录)

git忽略除一个扩展名和文件夹结构以外的所有文件

递归查找所有带有扩展名的文件

创建带有扩展名和当前日期的新文件夹

带有特定文件扩展名的cp递归

Windows 7-递归删除具有特定扩展名的所有文件+空文件夹

apache2重写子文件夹和文件扩展名

重写URL:从URL删除子文件夹和文件扩展名

删除文件夹名称HTACCESS和文件扩展名?