在外部表中有动态列

时间:2012-06-05 12:22:44

标签: oracle oracle11g

我的要求是我必须在存储过程中为具有不同列的不同文本文件使用单个外部表。

我可以在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;

1 个答案:

答案 0 :(得分:1)

为外部表定义的列集,就像为常规表定义的列集一样,必须在定义外部表时知道。您无法在运行时选择确定该表今天有30列,明天有35列。您还可以将外部表定义为具有任何平面文件将具有的最大列数,通常将列命名(即col1col50),然后移除计算的复杂性外部表的N列实际上是ETL代码的特定字段。但是,为什么这比正确创建外部表定义更有用。

为什么要求使用单个外部表定义来加载许多不同格式的文件?这似乎不合理。

您可以在运行时删除并重新创建外部表定义吗?或者这是否违反了单个外部表定义的要求?