SQL Loader中Insert和Append语句之间的区别?

时间:2011-01-27 04:59:54

标签: oracle sql-loader

任何人都能告诉我SQL Loader中Insert和Append语句之间的区别吗?请考虑以下示例: 这是我的控制文件

     load_1.ctl
     load data 
     infile 'load_1.dat' "str '\r\n'" 
     insert*/+append/* into table sql_loader_1 
     ( 
      load_time sysdate, 
      field_2 position( 1:10),
      field_1 position(11:20)
     ) 

这是我的数据文件

     load_1.dat
     0123456789abcdefghij
     **********##########
     foo         bar
     here comes a very long line 
     and the next is 
     short 

2 个答案:

答案 0 :(得分:7)

documentation相当清楚;当您加载到空表时使用INSERT,并且在向(可能)包含数据(您想要保留)的表中添加行时使用APPEND

如果您的表为空,

APPEND仍然有效。如果您期望表为空,INSERT可能会更安全,因为如果不是这样会出错,可能会避免意外结果(特别是如果您没有注意到并且没有得到其他错误唯一索引约束违规)和/或后载数据清理。

答案 1 :(得分:-3)

差异有两点明确:

  • append只会在声明结尾处添加记录
  • 插入将插入您想要的任何地方,即如果您的表有10列,您只能插入5列,但附加不能。

附加你的数据和表应该有相同的列意味着在行级而不是列级插入数据

如果你的表有数据,如果它是空的那么你也不能使用insert,那么只有你可以使用insert。

希望有所帮助