我尝试使用sql加载器尝试。事实是必须为数据加载。在表中。我正在使用Oracle 11g。
sql*加载程序文档说:
当您加载表时,可以将
INTO TABLE
子句用于 指定特定表的加载方法(INSERT
,APPEND
,REPLACE
或TRUNCATE
)仅适用于该表。该方法 覆盖全局表加载方法。全局桌载 默认情况下,方法为INSERT
,除非有其他方法 在任何INTO TABLE
条款之前指定。
因此,默认情况下,您的表负载将处于INSERT
模式,这确实需要表为空。
该文档还解释了如何将数据加载到非空表中;在您的情况下,您想保留现有数据:
附加
如果数据已经存在于表中,则SQL*加载程序将新行附加到其上。如果数据尚不存在,则 新行被简单加载。您必须具有使用APPEND
选项的SELECT
特权。
因此,您的控制文件需要说类似的话(如示例所示):
LOAD DATA
INFILE 'my_file.dat'
BADFILE 'my_file.bad'
DISCARDFILE 'my_file.dsc'
APPEND
INTO TABLE my_table
...
您还可以考虑将新的CSV数据用作外部表并将其插入实际表格,这可能会更加灵活。