【问题标题】:SQL LOADER CONTROL FILESQL 加载器控制文件
【发布时间】:2011-07-11 17:45:07
【问题描述】:

我有这个加载器控制文件。

LOAD DATA
REPLACE
INTO TABLE TEST
WHEN TEST_CD != 'A' AND TEST_CD = 'B' AND TEST_TYPE_CD = 15

目前它在 TEST_CD = 'B' AND TEST_TYPE_CD = 15 时加载数据,但现在我想修改它,以便当 TEST_CD = 'B' 以及 test_type_cd = 15 时也是如此。我不想在它的时候加载所有 Test_type_cd 15 ..我只想在满足这两个条件时才加载..只要把大括号放在它周围就可以了..请有人告诉我如何修改它..

我想每个人都对我需要的东西感到困惑..我希望第一个条件满足以及第二个和第三个条件作为一个条件不单独行动..例如,如果 test_cd 不等于 A 则加载数据但第二个和第三个条件应该作为一个整体..当 test_cd = B 并且 test_type_cd 是 15 而不是加载数据..我不希望 test_type_cd 申请除 B 之外的任何其他 test_cd ..我有 5 个 test_cd A B C D E ..我只希望 B 应用 test_type_cd = 15..

【问题讨论】:

  • 您的意思是要加载数据 TEST_CD = 'B' 或 TEST_TYPE_CD =5 或两者都加载?
  • 您的代码已经确保满足这两个条件。
  • 我想在 test_cd = 'B' 时加载数据,如果 test_type_cdis 也为 15 则加载该行.. 当它同时满足两个条件时.. 现在它不关心 test_cd 何时为 b 测试类型 cd 为 15与否.. 如果它满足一个它的加载
  • 另外,TEST_CD != 'A' 是不必要的,因为TEST_CD = 'B'
  • 你能仔细检查一下其他东西没有坏吗?因为你的语法是正确的。您已经在使用 AND 运算符而不是 OR 运算符,因此它不可能按照您描述的方式运行。

标签: sql oracle sql-loader controlfile


【解决方案1】:

试试

LOAD DATA
REPLACE
INTO TABLE TEST
WHEN TEST_CD = 'B' AND TEST_TYPE_CD = 15 -- load everything that is b and 15
INTO TABLE TEST
WHEN TEST_CD != 'A' AND TEST_CD != B -- load everything that is not a and not b (because it is loaded above)

【讨论】:

    【解决方案2】:

    那么,您希望它在任何一个条件为真时加载,而不一定是两个条件?

    WHEN TEST_CD != 'A' AND (TEST_CD = 'B' OR TEST_TYPE_CD = 15)
    

    可能会满足您最初问题的不完整英语。

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多