2010-03-10 51 views
1

如果我有一个CSV文件,该文件是按以下格式SQL * Loader的 - 我怎么能忽略与特定charactre某些行

"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" 

感谢

+0

你有哪些版本的Oracle DB? – Guru 2010-08-22 11:56:50

回答

2

按照SQL * Loader控制文件参考(11克)的Loading Records Based on a Condition部分:

“你可以选择加载或通过使用WHEN子句来检验记录中的条件,放弃逻辑记录。“

所以,你需要这样的事:

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

LIKE运营商不可用!你只有=!=

也许你可以尝试一个外部表。

1

我会在桌子上粘上CONSTRAINT,然后让它们被拒绝。也许加载后删除它们。或者使用unix“grep -v”清除文件。