有什么办法用C/C++开发一个类似于ORACLE中SQL*LODER这样的数据导入工具?该怎么处理

有什么办法用C/C++开发一个类似于ORACLE中SQL*LODER这样的数据导入工具?
各位大侠,
  有什么办法用C/C++开发一个类似于ORACLE中SQL*LODER这样的数据导入工具?
  就是有一个文本文件,里面有几百兆的数据,想自己开发一个导入的工具,但是这个工具的导入效率不能够比ORACLE
自带的SQL*LODER工具的效率差太多,我连接数据库的方式采用的是ODBC这种方式。
  请问有没有好的思路,或者有谁知道SQL*LODER的工作原理的,有哪些办法(自己用C/C++编写的工具)可以把一个大文件里的内容高效的导入到ORACLE里。有没有开源的C/C++代码?或者大伙儿曾经写过的类似的代码?能共享一下,或者给点思路么?
   
  多谢了,在此感激不尽!!

------解决方案--------------------
这个相当有难度。

要开发这样的工具,必须对Oracle数据库的文件结构(比如数据库文件,索引文件等)有透彻的了解。

通常,如果我们用sql命令插入数据,在普通的机器上最多也就是几千条/秒,因为:
1. 要通过Oracle数据库服务器程序
2. 数据表有各种各样的约束。

sql loader这样的工具,则基本上绕过了Oracle数据库服务器程序,直接对文件(比如数据库文件、索引文件等等)进行读写,而且在一定程度上也可以减少约束对写数据的迟滞,因此其装载数据的速度要快很多。

楼主用ODBC开发一个数据装载的工具,很明显要通过数据库服务器程序了,其效率不可能和sql loader相提并论。而且ODBC或其上衍生的一些数据访问方式,相对OCI和Pro *C/C++而言效率都是不高的,所以,建议楼主考虑使用OCI或者Pro *C/C++,它们是Oracle数据库专门提供给C/C++语言的API,效率比ODBC之类的要高不少。OCI和Pro *C/C++相比,OCI效率更高一些,但Pro *C/C++更容易掌握。
------解决方案--------------------
调用oci程序速度要快些,主要就是调用批量插入方法,SQL*LODER的原理也就是批量插入数据。
先读文件,读取若干条数据存放到缓存中,然后提交到数据库中,再继续读文件……
就是这样的思路