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

标签 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;

最佳答案

您应该为此使用立即执行语句:

execute immediate 'DROP TABLE TEST_CSV CASCADE CONSTRAINTS';

等等... 它与通常的命令使用没有任何区别。但是您可能会在权限方面遇到一些麻烦。 Oracle 动态 sql 通常有一些错误,他的行为可能与普通的 DDL 命令不同

关于sql - 是否可以在 PLSQL/Oracle 中动态创建外部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259184/

相关文章:

php - 跳过导入 csv 的第一行

java - 读取CSV文件java的最快方法

oracle - ORA-06550 : wrong number or types of arguments

sql - 搜索sql函数

sql - MySQL 查询(混合插入和选择)

sql - 从每月生成的系列中生成每日汇率

mysql - 如何从表格和最多两个其他项目中进行选择

csv - ubuntu 上的 Neo.ClientError.Statement.ExternalResourceFailed

sql - 具有实时 PL/SQL 输出

mysql - 将所有 MySQL 数据库导出到一个文件