繁体   English   中英

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

[英]how to transfer data from a single csv/excel file to multiple oracle tables

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

我们应该怎么做 ? 我应该先将文件转换为csv吗?

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

通常,使用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文件进行交互很有趣,因此您可能无法使用这种方法。 了解更多

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

如果您根本不想构建任何新结构,则可以编辑CSV文件以从DUAL形成一组SELECT语句(使用UNION ALL),然后从中插入目标表。 精通regex确实可以帮助完成此类任务。

如果这是例行活动,请使用SQLLDR-SQL Loader将原始数据加载到登台表。 用业务逻辑编写存储过程,以将数据从登台表转换为主表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM