WEB开发网
开发学院数据库Oracle sqlldr的用法总结 阅读

sqlldr的用法总结

 2008-12-17 13:06:00 来源:WEB开发网   
核心提示: 7 * 合并多行记录为一行记录LOAD DATAINFILE *concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录INTO TABLE DEPTreplaceFIELDS TERMINATED BY ','(DEPTNO,DNAME

7 ***** 合并多行记录为一行记录

  LOAD DATA
  INFILE *
  concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录
  INTO TABLE DEPT
  replace
  FIELDS TERMINATED BY ','
  (DEPTNO,
  DNAME "upper(:dname)",
  LOC "upper(:loc)",
  LAST_UPDATED date 'dd/mm/yyyy'
  )
  BEGINDATA
  10,Sales, // 其实这3行看成一行 10,Sales,Virginia,1/5/2000
  Virginia,
  1/5/2000
  // 这列子用 continueif list="," 也可以
  告诉sqlldr在每行的末尾找逗号 找到逗号就把下一行附加到上一行
  LOAD DATA
  INFILE *
  continueif this(1:1) = '-' // 找每行的开始是否有连接字符 - 有就把下一行连接为一行
  // 如 -10,Sales,Virginia,
  // 1/5/2000 就是一行 10,Sales,Virginia,1/5/2000
  // 其中1:1 表示从第一行开始 并在第一行结束 还有continueif next 但continueif list最理想
  INTO TABLE DEPT
  replace
  FIELDS TERMINATED BY ','
  (DEPTNO,
  DNAME "upper(:dname)",
  LOC "upper(:loc)",
  LAST_UPDATED date 'dd/mm/yyyy'
  )
  BEGINDATA // 但是好象不能象右面的那样使用
  -10,Sales,Virginia, -10,Sales,Virginia,
  1/5/2000 1/5/2000
  -40, 40,Finance,Virginia,13/04/2001
  Finance,Virginia,13/04/2001

8 ***** 载入每行的行号

  load data
  infile *
  into table t
  replace
  ( seqno RECNUM //载入每行的行号
  text Position(1:1024))
  BEGINDATA
  fsdfasj //自动分配一行号给载入 表t 的seqno字段 此行为 1
  fasdjfasdfl // 此行为 2 ...

9 ***** 载入有换行符的数据

注意: unix 和 windows 不同 & /n

< 1 > 使用一个非换行符的字符

  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  FIELDS TERMINATED BY ','
  TRAILING NULLCOLS
  (DEPTNO,
  DNAME "upper(:dname)",
  LOC "upper(:loc)",
  LAST_UPDATED "my_to_date( :last_updated )",
  COMMENTS "replace(:comments,'n',chr(10))" // replace 的使用帮助转换换行符
  )
  BEGINDATA
  10,Sales,Virginia,01-april-2001

上一页  1 2 3 4 

Tags:sqlldr 用法 总结

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接