((此解决方案中的 PL/SQL 代码在哪里!!??!请耐心等待...
答案埋在这里的某个地方……我介绍了一些注意事项
以及在进入之前需要考虑的假设
任务。最后,你会发现 Oracle APEX 实际上有一个
完全满足您指定的内置解决方案......
一些警告。))
如果您在 Oracle APEX 平台中工作,您将获得一些优势。 APEX 版本 4.2 及更高版本有一个名为“数据加载”的新页面元素。然而缺点是上传目标的定义是固定的而不是动态的。在加载数据之前,您需要了解表格的结构。
解决此问题的一种方法是构建一个通用的两列表作为您的目标,它将用于所有上传。第 1 列将是您的文件名,第 2 列将是单个 clob 数据类型,它将包含整个数据文件的内容,包括标题行。 “数据加载”元素将使用户有机会通过几次单击来验证和选择此映射约定。
此时,主要是 PL/SQL 后端工作来解析和转换上传的数据。至于动态表创建,我注意到 Oracle 包 DBMS_SQL 允许执行 DDL SQL 命令,这可能是创建自定义表的途径。
Alex Poole 的评论也很重要,您需要对数据类型做出一些笼统的假设,或者提供有关所包含数据类型的更多线索。假设您可以依赖现有数据值的样本并不好......如果您上传的所有值都为空怎么办?我建议在数据输入中使用第二列,其中包含有关每列数据类型的线索......就像预期的标题名称一样,也许:AAAAA = 用于五个字符的列,# = 用于数字,MM/DD /YYYY = 带有特定掩码的日期。
更简单的路线:
您需要允许最终用户访问 APEX 服务器工作区上的开发人员角色帐户。它并不像你想象的那么可怕。通过仔细的指导和一些简单的预防措施,即使是最不懂技术的用户,我也能完成这项工作。之所以会这样,是因为在下面的菜单项下发现了一个更强大的上传工具:
SQL Workshop --> 实用工具 --> Data Workshop
“数据加载”下有一个选择-->“电子表格数据”
数据加载工具会自动执行以下操作:
- 通过客户端计算机上的浏览功能接受 CSV 格式的文件
- 上传文件并解析列布局(名称)的第一条记录
- 允许用户从上传的文件创建新表,或映射到现有表。
- 对于新表,可以声明每个列数据类型,如果需要从上传的数据进行额外转换,还可以声明特定的数字/日期掩码。
- 也可以在解析上传的文件之前声明分隔符类型、可选的附件(如双引号)、小数约定和货币类型。
一旦用户确定了所有这些映射和设置,就会使用上传的数据创建表格。记录上传中的任何错误都会在之后立即报告,并提供有关失败记录的详细反馈。
需要注意的安全注意事项:
您可能不想让最终用户访问您的 APEX 服务器的后端...但是您可以创建一个新的工作区...只为您的最终用户...创建一个新的数据库模式来接收他们的上传,可能需要一些小心资源控制。开发人员是所需的最低角色……但即使最终用户看到其他内容,也无法从隔离的工作区访问任何重要的内容。
几年前,我在 4.0/4.1 版本的 APEX 平台上实现了隔离工作区方法,并且效果很好。我们的最终用户可以控制她的数据输入的分期和质量检查(来自从多种来源收集的 excel 电子表格/csv 导出)。我想将她完全从图片中剔除并专注于自动化我们的数据库和她的其他来源之间的导出-审查-上传过程可能会更好。在这种情况下,所涉及的数据量不够大(100 到 1000 条记录),并且在将导出的数据推送到数据库之前需要手动审查和编辑非常重要......所以人为因素是在这种情况下仍然很重要 - 这是您现在要考虑的事情。