从外部表中读取 Excel 文件

Posted

技术标签:

【中文标题】从外部表中读取 Excel 文件【英文标题】:Read Excel Files from External Tables 【发布时间】:2017-04-16 09:14:55 【问题描述】:

我的任务是创建一个模板,该模板将由业务用户填写员工信息,然后我们的程序将使用外部表将其加载到数据库中。

但是,我们的业务用户会通过添加、删除或重新排序字段来不断更改模板。

我确信使用 XLSX 而不是 CSV,这样我就可以锁定列标题,这样他们就无法删除、添加和重新排序列。 但是,当我查询外部表时,它在读取 XLSX 时显示非 ASCII 字符,因为它是二进制的。

我该怎么做?

    有效地 锁定 CSV 文件的标题?

【问题讨论】:

【参考方案1】:

您遇到的是政治问题,但您正在寻找技术解决方案。不太合适。

问题分为两部分:

    有人认为在电子表格中收集用户输入是个好主意,但通常情况并非如此。 用户正在摆弄输入格式,这是他们不应该的。

修复是:

    严格执行数据结构。拒绝任何不符合要求的 CSV,并让用户对其进行编辑。当他们意识到自己只是在为自己创造更多工作时,他们很快就会厌倦调整电子表格。但他们也会产生怨恨,所以考虑一下...... 构建数据输入屏幕。敲出类似电子表格的网格 UI 非常简单。在 Java 中你不需要任何复杂的东西:Oracle 的 Apex 正是为这类事情而设计的。 Find out more。

但是,如果您坚持使用 Excel 作为 UI,我建议您在 Amis 网站上查看 Anton Scheffer 的优秀 PLSQL as_read_xlsx 包。 Check it out。您可能需要将外部表替换为表(可能是流水线)函数的视图。

【讨论】:

以上是关于从外部表中读取 Excel 文件的主要内容,如果未能解决你的问题,请参考以下文章

在excel中将数据从外部csv附加到表中

导入excel错误:外部表不是预期的格式 解决方案

Impala 外部表读取未压缩文件但具有名称 (*.csv.gz)

批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案

如何将数据从 CSV 加载到 impala 的外部表中

从外部表读取与加载数据并在 Bigquery 中读取