从命令行将数据从csv文件加载到oracle表

时间:2014-01-22 09:40:02

标签: oracle oracle11g sql-loader data-import

我尝试使用sql loader。事情是数据加载需要为空的表。有没有办法在不截断表的情况下进行数据上传。需要在表中附加CSV数据。我正在使用oracle 11克。

1 个答案:

答案 0 :(得分:6)

SQL*Loader documentation说:

  

加载表时,可以使用INTO TABLE子句   指定特定于表的加载方法(INSERTAPPEND,   仅适用于该表的REPLACETRUNCATE)。那种方法   覆盖全局表加载方法。全局表加载   默认情况下,方法为INSERT,除非采用不同的方法   在任何INTO TABLE条款之前指定。

因此,默认情况下,您的表加载将处于INSERT模式,这需要表为空。

文档还解释了how to load data into a non-empty table;在您的情况下,您希望保留现有数据:

  

<强> APPEND
  如果表中已存在数据,则SQL * Loader会将新行追加到该表中。如果数据尚不存在,那么   简单地加载新行。您必须具有SELECT权限才能使用APPEND选项。

所以你的控制文件需要说出这样的内容(如in their example所示):

LOAD DATA
INFILE 'my_file.dat'
BADFILE 'my_file.bad'
DISCARDFILE 'my_file.dsc'
APPEND
INTO TABLE my_table
...

您还可以考虑将新的CSV数据用作external table并从中插入真实表,这可能会更灵活。