【发布时间】:2015-11-20 09:37:07
【问题描述】:
我想使用外部表来加载 csv 文件,因为它非常方便,但问题是我如何确保我不会连续两次加载同一个文件?我无法验证加载的数据,因为它可能是与以前相同的信息;例如,我需要找到一种方法来确保用户不会加载与 2 小时前相同的文件。 我想过每次上传不同名称的文件并发出alter table命令来更改外部表定义中的文件名称,但这听起来有点冒险。 我还考虑用序列标记文件中的每一行以帮助区分文件,但我怀疑客户端会接受它,因为他们需要手动执行此操作(文件从某处导出)。
有没有更好的方法来确保我不会在外部表中加载相同的文件,除非更改文件名并在表上执行更改?
谢谢
【问题讨论】:
-
您如何仅根据文件名识别“相同文件” - 内容不同? capturing the filename 有用吗? (你可以做同样的事情来添加你的序列)。或者,您可以使用预处理器指令来查找未处理的文件并将其重命名为您的外部表期望的标准名称。然后后续查询将查找不同的文件。需要一些工作,但可能是可行的。
-
客户(一家银行)说他们可以在早上和下午加载相同的数据,这是正确的。但他们需要确保他们不会错误地加载同一个文件,因此他们希望文件具有不同的名称
-
如果他们提供不同名称的文件,并且您只想查看每个文件一次,那么将等待文件(可能是最旧/最新?)重命名为您的外部表期望的预处理器可能然后工作。第二次查看它时,它会查找不同的文件,因此您不会再看到相同的文件。较早的答案可能会给出一个起点。不幸的是,我现在没有时间整理一些东西......
标签: oracle csv plsql import external-tables