如何将数据从单个 csv/excel 文件传输到多个 oracle 表

Posted

技术标签:

【中文标题】如何将数据从单个 csv/excel 文件传输到多个 oracle 表【英文标题】:how to transfer data from a single csv/excel file to multiple oracle tables 【发布时间】:2017-06-23 09:08:53 【问题描述】:

我有一个包含 15 列和 1000 条记录的 excel 文件。我想将该数据加载到 3 个不同的 oracle 表中。

我们怎样才能做到这一点? 我应该先将文件转换为 csv 吗?

此外,还有一个复杂的任务。在插入表之前,我需要执行一些验证,例如。 我在 excel 中有一个列 A 我想使用列 A 从 Oracle 表中派生值 B 说 'tab' ,然后将 B 存储在表 'tab' 上。

【问题讨论】:

你找到这个了吗? ***.com/questions/4168398/… @yongsup - 该答案与将数据导出到 CSV 有关。这个问题是关于导入数据的。 您可以使用 sqlldr 将数据从一个文件加载到 3 个表中,只要每行上有一个标识符来标识该行转到哪个表即可。如果它在行的开头会更好。您需要先导出到 csv。显示所有类型的一些实际数据行,但如果有的话当然会更改个人数据。 相同的数据会进入 3 个不同的表吗?请展示一些示例数据。 【参考方案1】:

通常使用 SQL 处理原始数据更容易,因此第一步是以最简单的方式获取可查询的原始数据。

最简洁的解决方案是使用外部表。将 Excel 电子表格转换为 CSV 文件,然后定义一个外部表来查询该文件。然后你可以使用...

 INSERT INTO << table1 >> (...)
 SELECT what_ever  FROM << external_table >>

...甚至...

INSERT ALL
    INTO << table1 >> (...)
    INTO << table2 >> (...)
    INTO << table3 >> (...)
SELECT *  FROM << external_table >>

...取决于您需要应用的规则。

如果您的组织已经使用外部表,这应该很容易配置。但是,有些地方对允许数据库与 OS 文件进行交互很有趣,因此您可能无法使用这种方法。 Find out more.

或者,您可以构建一个与 CSV 文件匹配的临时表,并使用 SQL*Loader 将数据加载到该临时表中。 SQL*loader 是一个客户端工具,所以它需要较少的权限来使用。

如果您根本不想构建任何新结构,您可以编辑 CSV 文件以从 DUAL 形成一组 SELECT 语句(使用 UNION ALL)并从中插入目标表。掌握正则表达式真的可以帮助完成这样的任务。

【讨论】:

【参考方案2】:

如果是例行活动, 使用 SQLLDR - SQL Loader 将原始数据加载到临时表。 编写一个存储过程,其中包含将数据从临时表转换到主表所需的业务逻辑

【讨论】:

以上是关于如何将数据从单个 csv/excel 文件传输到多个 oracle 表的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Excel 文件另存为 CSV? [复制]

如何将数据从一项活动传递到多项活动?

如何在 vuetify 数据表上添加导出 csv、excel 按钮?

R语言 CSV文件

谷歌架构从故障转移系统到多宿主架构的转变

如何将项目从 boost::variant 移动到多地图?