我的要求是我必须在存储过程中为具有不同列的不同文本文件使用单个外部表。
我可以在Oracle 11g的外部表中使用动态列吗?像这样:
create table ext_table as select * from TBL_test
organization external (
type oracle_loader
default directory DATALOAD
access parameters(
records delimited by newline
fields terminated by '#'
missing field values are null
)
location ('APD.txt')
)
reject limit unlimited;
答案 0 :(得分:1)
为外部表定义的列集,就像为常规表定义的列集一样,必须在定义外部表时知道。您无法在运行时选择确定该表今天有30列,明天有35列。您还可以将外部表定义为具有任何平面文件将具有的最大列数,通常将列命名(即col1
到col50
),然后移除计算的复杂性外部表的N列实际上是ETL代码的特定字段。但是,为什么这比正确创建外部表定义更有用。
为什么要求使用单个外部表定义来加载许多不同格式的文件?这似乎不合理。
您可以在运行时删除并重新创建外部表定义吗?或者这是否违反了单个外部表定义的要求?