仅更改外部表 BADFILE、LOGFILE 和 DISCARDFILE 参数
我有几个外部表用于将文件数据读入数据库,每个外部表都针对特定的文件规范。
对于单一格式的文件,通过将表指向新的默认目录和新文件名来重用表。这工作正常,只是我现在需要动态更改 BADFILE、LOGFILE 和 DISCARDFILE 参数,同时保持其余访问参数不变。
有没有一种直接的方法可以做到这一点,而不必重新指定所有其他访问参数(列转换字段分隔符等)?
I have several external tables used to read file data into the DB each one for a particular file specification.
For files of a single format a table is reused by pointing it at a new default directory and new file name. This is working fine except I now need to dynamically change the BADFILE, LOGFILE and DISCARDFILE parameters whilst keeping the rest of the access parameters unchanged.
Is there a direct way to do this without having to respecify all the other access parameters (column transformations filed delimiters etc.) as well?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不幸的是,如果不重新指定其他访问参数,则无法仅更改 BADFILE、LOGFILE 和 DISCARDFILE 参数。
对于任何将来发现这个问题的人来说,我最终通过以下方法解决了这个问题:
选择外部表并在其访问参数上使用 REGEXP_REPLACE 来替换访问参数 BLOB 中与 BADFILE、LOGFILE 和DISCARDFILE 及其关联值与我提供的新值。
然后,我使用动态 SQL 来更改外部表并提供新的访问参数。
这并不理想,我最终不得不重新指定所有访问参数,但使用 REGEX(并完全测试输出)意味着该过程不会太痛苦或太慢。
Unfortunately changing just the BADFILE, LOGFILE and DISCARDFILE parameters couldn't be achieved without having to respecify the other access parameters too.
For what it's worth and for anyone who finds this question in the future i eventually worked around the problem with the following:
Select the external table and use REGEXP_REPLACE on its access parameters to replace the parts of the access parameter BLOB that matched BADFILE, LOGFILE and DISCARDFILE and their associated values with the new values that I supplied.
I then used dynamic SQL to alter the external table and supplied the new access parameters.
It's not ideal and I did end up having to respecify ALL the access parameters but using the REGEX (and fully testing the output) meant the process wasn't too painful or slow.
从 Oracle 12cR2 开始,您可以 覆盖查询中外部表的参数。
例如:
Starting from Oracle 12cR2 you could override parameters for external tables in query.
For example:
您可以更改 ACCESS PARAMETERS 子句,其余部分保持不变。
请参阅此处 http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/tables013.htm#i1007591
请注意,据我所知,如果您只想更改 BADFILE,您仍然必须重复访问参数中的所有内容。
例如:
You can change the
ACCESS PARAMETERS
clause leaving the rest unchanged.see here http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/tables013.htm#i1007591
Note that as far as I know, If you want to change only the BADFILE, you still have to repeat all things in the ACCESS PARAMETERS.
e.g.: