暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle SQL Loader控制文件中的WWW子句

askTom 2016-12-06
490

问题描述

嗨,小队

我们有一个以SWIFT940标准格式提供的银行对帐单数据文件,其中包含西里尔字符。根据行的前3个字符,我们决定在行中提供什么信息,因此使用位置是唯一的解决方案。

数据文件示例:

:20:9400124576021331
:25:200340027
:28:141
:60F:C160801KZT21637948、20
:61:160810801CT70250000、00NFEX1162140060//1162140055
:86:059?00佣金和收费?20/PY/ КПН ЗА НЕРЕЗИДЕНТА КОМПАН
И АО МХК ЕВРОХИМ РОССИЯ ( ДОГОВОР ?21 ЗАЙМА No001-0655165 ОТ 30.0
4.2015年10月. )。?22/BN/ НАЛОГОВОЕ УПРАВЛЕНИЕ ПО БОСТАНДЫКСК ?23/BI/KZ2407
0105KSN00000000?24/AB/KKMFKZ2A ГУ КОМИТЕТ КАЗНАЧЕЙСТВА МФ РК АЛМАТ
Ы KZ24070105KSN00?2500000?26/OA/KZT ,
:62F:C160801KZT42536082,21
:64:C160801KZT42536082,21

在上面的数据文件中,记录ID_no :有多行。

如果新行以多字节字符开头, sql loder加载数据失败。我尝试使用喜欢和不喜欢,但它似乎我们只能使用'='和'<>'与时。有没有办法加载这样的文件?

测试CTL文件:

加载数据
字符集UTF8
替换
保留空白

--记录类型61 :补充详细信息(将rec_id_no设置为9 )
进入表ce_stmt_int_tmp
当记录ID_no不类似于':%'
尾随空号
(Rec_noRECNUM、,
rec_id_no位置(1:10)CAL "decode(Secr(rec_id_no, 1, 1), ':','0','9') " ,
第1列位置(1:80)字符)

--记录类型86 :信息发送给帐户所有者
进入表ce_stmt_int_tmp
当rec_id_no类似“: 86%”时
尾随空号
(Rec_noRECNUM、,
rec_id_no位置(1:10)CAL
以空白"ltim(subr(rec_id_no, 1, 3), ':')",终止
第1列位置(5:2000)字符)


在这方面请帮忙。

谢谢,
普拉蒂马

专家解答

要更改喜欢等式,只需将前N个字符与字符串进行比较。例如:

WHEN (1:3) = ':86'


要加载跨多行的记录,可以使用infile的str子句。但你需要一个字符来标记记录的结尾才能做到这一点!

例如,如果每个记录的末尾都有一个管道(|),则可以使用以下命令将多行作为一行载入:

INFILE data.dat "STR '|\r\n'"


但是你需要你的文件看起来像这样:

:20:9400124576021331|
:25:200340027|
:28:141|
:60F:C160801KZT21637948,20|
:61:1608010801CT70250000,00NFEX1162140060//1162140055|
:86:059?00Commissions And Charges?20/PY/КПН ЗА НЕРЕЗИДЕНТА КОМПАН
И АО МХК ЕВРОХИМ РОССИЯ (ДОГОВОР ?21ЗАЙМА №001-0655165 ОТ 30.0
4.2015Г.).?22/BN/НАЛОГОВОЕ УПРАВЛЕНИЕ ПО БОСТАНДЫКСК?23/BI/KZ2407
0105KSN0000000?24/AB/KKMFKZ2A ГУ КОМИТЕТ КАЗНАЧЕЙСТВА МФ РК АЛМАТ
Ы KZ24070105KSN00?2500000?26/OA/KZT|
:62F:C160801KZT42536082,21|
:64:C160801KZT42536082,21|

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论