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

时间:2017-06-23 09:08:53

标签: excel csv plsql oracle11g

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

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

此外,还有一个复杂的任务。我需要在插入表之前执行一些验证,例如。 我在Excel中有一个列A我想使用A列从Oracle表中获取值B,然后选择' tab' ,然后将B存储在桌面' tab'。

2 个答案:

答案 0 :(得分:0)

通常使用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)并从中插入目标表。掌握正则表达式可以真正帮助完成这样的任务。

答案 1 :(得分:0)

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