【问题标题】:SQL*Loader - How can i ignore certain rows with a specific charactreSQL*Loader - 我如何忽略具有特定字符的某些行
【发布时间】:2010-03-10 17:43:41
【问题描述】:

如果我有以下格式的 CSV 文件

"fd!","sdf","dsfds","dsfd"
"fd!","asdf","dsfds","dsfd"
"fd","sdf","rdsfds","dsfd"
"fdd!","sdf","dsfds","fdsfd"
"fd!","sdf","dsfds","dsfd"
"fd","sdf","tdsfds","dsfd"
"fd!","sdf","dsfds","dsfd"

是否可以排除第一列在字符串末尾有感叹号的任何行。 即它应该只加载以下行

"fd","sdf","rdsfds","dsfd"
"fd","sdf","tdsfds","dsfd"

谢谢

【问题讨论】:

  • 您拥有哪个版本的 Oracle DB?

标签: oracle sql-loader


【解决方案1】:

根据 SQL*Loader 控制文件参考 (11g) 的 Loading Records Based on a Condition 部分:

“您可以通过使用 WHEN 子句测试记录中的条件来选择加载或丢弃逻辑记录。”

所以你需要这样的东西:

LOAD DATA ... INSERT INTO TABLE mytable   WHEN mycol1 NOT LIKE '%!' 
(mycol1..  ,mycol2 ..)

但是 LIKE 运算符不可用!你只有 =!=

也许您可以尝试使用外部表。

【讨论】:

    【解决方案2】:

    我会在桌子上贴一个约束,然后让它们被拒绝。也许在加载后删除它们。或者一个 unix "grep -v" 来清除它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多