是否可以在PLSQL / Oracle中动态创建外部表

时间:2014-08-12 08:07:07

标签: sql csv plsql oracle10g external

目前我遇到了一些麻烦,我正在尝试动态地从CSV文件中提取值并动态创建外部表,因为每个CSV文件每次都会有不同数量的标题。

有没有办法动态地做到这一点,我所做的研究告诉我你不能,但如果你能通过oracle线程很难,我也没有运气实现这个功能。

有没有人试过这个或者有过可以提供一些帮助或建议的经验?

我目前的剧本:

DROP TABLE TEST_CSV CASCADE CONSTRAINTS;

CREATE TABLE TEST_CSV
(
  VAL1  VARCHAR2(255 BYTE),
  VAL2  VARCHAR2(255 BYTE),
  VAL3  VARCHAR2(255 BYTE)
)
ORGANIZATION EXTERNAL
  (  TYPE ORACLE_LOADER
     DEFAULT DIRECTORY DATALOAD
     ACCESS PARAMETERS
       ( RECORDS DELIMITED BY NEWLINE
       FIELDS TERMINATED BY ","
       )
     LOCATION (DATALOAD:'test1.csv')
  )
REJECT LIMIT UNLIMITED;

3 个答案:

答案 0 :(得分:0)

您应该使用execute immediate语句:

execute immediate 'DROP TABLE TEST_CSV CASCADE CONSTRAINTS';
等等...... 它与通常的命令使用没有任何区别。但是你可能会遇到一些权限问题。 Oracle动态sql通常有一些错误,他的行为可能与普通的DDL命令不同

答案 1 :(得分:0)

是的,可以为外部表创建一个动态语句,然后执行该语句的EXECUTE IMMEDIATE。您还可以查看我一直在使用Line:1400和Line:1419的代码

Code

答案 2 :(得分:-1)

我建议您创建一个创建外部表的动态过程,这样您就可以通过参数和目录来控制头部。

观察,你应该先考虑在这个动态过程中可能发生的所有情况。

它有效,我以前做过。

任何问题只是让我知道。

感谢。