动态填充外部表位置

Dynamically populate external tables location

我正在尝试使用 oracle external tables 将平面文件加载到数据库中,但位置子句有点问题。我们收到的文件附加了一些信息,包括日期,所以我希望在位置子句中使用通配符,但看起来我做不到。

我认为我假设我无法使用通配符是正确的,有没有人建议我如何在不为每个外部编写大量代码的情况下完成此操作 table?

目前的想法:

目前我能想到的唯一方法是使用 shell 观察程序脚本和参数 table。用户可以指定:输入目录、文件掩码、外部 table 等。然后当在目录中找到文件时,shell 脚本会生成一个包含文件掩码的文件列表。对于找到的每个文件,发出 alter table 命令以将给定外部 table 上的位置更改为该文件并启动与该文件关联的其余 pl/sql。可以对使用文件掩码找到的每个文件重复此操作。我想这样做的好处是我还可以在每个 运行 之后将日期添加到日志和错误文件的末尾。

我将 post 我最后采用的解决方案,这似乎是唯一的方法。

我有一个文件观察器,可以在给定的输入目录中使用特定的文件掩码查找文件。查找 table 还包括外部 table 的名称。然后我简单地在外部 table 上发出一个带有新文件名列表的 alter table。

对我来说,这不是什么大问题,因为我已经在使用 shell 进行大部分文件监视和文件操作。希望这可以节省寻找解决方案的年龄。