我有一个包含15列和1000条记录的excel文件。我想将这些数据加载到3个不同的oracle表。
我们怎么做? 我应该先将文件转换为csv吗?
此外,还有一个复杂的任务。我需要在插入表之前执行一些验证,例如。 我在Excel中有一个列A我想使用A列从Oracle表中获取值B,然后选择' tab' ,然后将B存储在桌面' tab'。
答案 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将原始数据加载到临时表。 编写一个存储过程,其中包含将数据从登台表转换为主表所需的业务逻辑