【问题标题】:How to create table dynamically based on the uploaded csv file column header using oracle apex如何使用oracle apex根据上传的csv文件列标题动态创建表
【发布时间】:2014-02-05 14:34:55
【问题描述】:

基于 csv 文件列标题,它应该动态创建表,并将该 csv 文件的记录插入到新创建的表中。 例如:

1) 如果我上传一个包含 3 列的文件 TEST.csv,它应该动态创建一个包含三个列的表
2)如果我再次上传一个名为 TEST2.csv 的新文件,它有 5 列,它应该动态创建一个有 5 列的表。

每次都应该根据上传的csv文件头创建一个表..

如何在 oracle APEX 中实现这一点..

提前致谢..

【问题讨论】:

    标签: oracle csv plsql oracle-apex


    【解决方案1】:

    在不创建新表的情况下,您可以使用可以从中选择的 TABLE 函数将 CSV 视为表。如果你从the Alexandria Project 下载包,你会发现一个函数可以在 CSV_UTIL_PKG 中完成这个任务(clob_to_csv 是这个函数,但你会在这里找到其他好东西)。

    您只需上传 CSV 并将其存储在 CLOB 列中,然后您就可以使用 CSV_UTIL_PKG 代码在其上构建报告。

    如果您必须为上传创建一个新表,您仍然可以使用此解析器。上传文件,然后只选择第一行(例如 SELECT * FROM csv_util_pkg.clob_to_csv(your_clob) WHERE ROWNUM = 1)。您可以使用 APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY 将此行插入到 Apex 集合中,以便轻松遍历每一列。

    您需要确定每列的数据类型,但可以对所有内容都使用 VARCHAR2。

    但是,如果您只是使用通用列,则可以轻松地将一个附加列存储为该记录集合的名称,并将所有上传的内容存储在同一个表中。只需构建另一个表来存储列名。

    【讨论】:

      【解决方案2】:

      如果结构是“动态的”,只需将此文件存储为 BLOB。 您也可以在此用例中使用 XML 数据类型,但它与 BLOB 列没有太大区别。 从 11g 开始就有 SecureFile 特性,它是一个新的 BLOB 实现,它比常规 BLOB 执行得更好,它适用于非结构化或半结构化数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-14
        • 2017-04-17
        • 2016-04-29
        • 1970-01-01
        • 2018-09-26
        • 1970-01-01
        相关资源
        最近更新 更多