我尝试使用sql loader。事情是数据加载需要为空的表。有没有办法在不截断表的情况下进行数据上传。需要在表中附加CSV数据。我正在使用oracle 11克。
答案 0 :(得分:6)
加载表时,可以使用
INTO TABLE
子句 指定特定于表的加载方法(INSERT
,APPEND
, 仅适用于该表的REPLACE
或TRUNCATE
)。那种方法 覆盖全局表加载方法。全局表加载 默认情况下,方法为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并从中插入真实表,这可能会更灵活。