在CTL文件SQL Loader中拆分CSV列

时间:2015-04-22 18:30:34

标签: oracle csv sql-loader

我的一个CSV文件中有1617列。 Oracle每个表限制为1000列,因此我创建了2个表。

表1:900列 表2:717列

我只有1个CSV文件,它是7 GB大文件。我需要使用sql loader在我的数据库上加载这个文件。

我想要一个可以为我做上述操作的控制文件,即使用前900列并加载到表1中,然后将717列加载到表2中。

1 个答案:

答案 0 :(得分:1)

我认为你不能用一个控制文件来做这件事。您可能必须使用2个控制文件。第一列用列901到1617设置为FILLER加载到表1,另一列用列1到900设置为FILLER加载到表2.运行sqlldr两次,每次控制文件指向同一个数据文件。确保两者都有主键列,以便以后加入它们。

使用包装器程序进行预处理或根据需要拆分文件的某种类型的预处理。

或者通过一个程序加载,该程序可以逐行读取文件并根据需要插入。

无论你做什么,它都将成为维护噩梦,处理那么多专栏。这里似乎需要一些正确的数据规范化,但我不得不处理我无法更改的供应商数据,所以如果是这种情况我会同情你,并且你正在加载到临时表中进行进一步处理。

有关生成控制文件的存储过程,请参阅此文章。通过对您的情况进行一些调整,它应该有很多帮助:46 Control Files for SQL Loader