【问题标题】:Multiple case statements in SQLLDR Control fileSQLLDR 控制文件中的多个 case 语句
【发布时间】:2015-03-26 16:33:14
【问题描述】:

我正在使用控制文件将数据加载到在 Windows 7 机器上运行的 Oracle 11g 中。我在使用以下 case 语句加载数据时遇到问题,我尝试了不同的方法,但未能成功。有什么建议吗? (在日志文件中的错误是:

记录 1:拒绝 - 表员工错误,列 blah。 ORA-00905: 缺少关键字

记录 2:拒绝 - 表员工错误,列 blah。 ORA-00905: 缺少关键字,.....等等。

代码是:

  Options (skip=1)

  load data
  APPEND INTO TABLE employee
  fields terminated by "\t"
  TRAILING NULLCOLS
  (
  a,
  b,
  c,
  d,
  blah "CASE WHEN :b='k' THEN 'LPAD(:blah,6,'0')'
             WHEN :b='s' AND :d='p' THEN 'LPAD(:blah,11,'0')'
             WHEN :b='s' AND :d='pr' THEN 'LPAD(:blah,8,'0')'
     END",
  g,
  h, 
  i
  )

【问题讨论】:

    标签: oracle11g etl sql-loader case-statement


    【解决方案1】:

    你已经用单引号包围了你的LPAD 调用,这就是它们不起作用的原因。尝试将表达式更改为类似

    blah "CASE WHEN :b='k' THEN LPAD(:blah,6,'0') 
             WHEN :b='s' AND :d='p' THEN LPAD(:blah,11,'0')
             WHEN :b='s' AND :d='pr' THEN LPAD(:blah,8,'0')
         END",
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多