目前我遇到了一些麻烦,我正在尝试动态地从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;
答案 0 :(得分:0)
您应该使用execute immediate语句:
execute immediate 'DROP TABLE TEST_CSV CASCADE CONSTRAINTS';
等等......
它与通常的命令使用没有任何区别。但是你可能会遇到一些权限问题。 Oracle动态sql通常有一些错误,他的行为可能与普通的DDL命令不同
答案 1 :(得分:0)
是的,可以为外部表创建一个动态语句,然后执行该语句的EXECUTE IMMEDIATE。您还可以查看我一直在使用Line:1400和Line:1419的代码
答案 2 :(得分:-1)
我建议您创建一个创建外部表的动态过程,这样您就可以通过参数和目录来控制头部。
观察,你应该先考虑在这个动态过程中可能发生的所有情况。
它有效,我以前做过。
任何问题只是让我知道。
感谢。