从delimitited文件DB2负载 - 逃跑\”中的字段不工作(DB2 Load from de

2019-10-29 20:52发布

我敢打赌,这是完全以简单,我只是没有看到它,但我不明白这一点..

我执行在DB2命令行处理器以下命令:

DB2 LOAD FROM “DB_ACC_PASS_REGEXP.del” DEL METHOD的P(1,2,3,4,5)MESSAGES “DB_ACC_PASS_REGEXP.del.msg” INSERT INTO DB_ACC_PASS_REGEXP(APP_ID,APREGEXP,EXPLAIN_TEXT,ID,OPT_KZ)NONRECOVERABLE INDEXING MODE REBUILD

它加载在以下文件到数据库中指定的数据。

1, “[AZ]” ,, 1,0

1, “[AZ]” ,, 2,0

1, “[0-9]” ,, 3,0

1,§| | $ |%|&| / |(|)| = | |`|“| * | + |〜|”|#| - | _ | | “[| \!”?|, |; |μ| <|> | |°| ^]” ,, 4,0

  ^ 

这是问题所在

的问题是,只有这些4个插入件3将被接受。 最后一个将被拒绝,因为DB2负载不会注意到双引号前的转义字符。

如果我改变最后一行:

1,“[| X |§| $ |%|&| / |(|)| = | |`|”| * | + |〜|“|#| - | _ | |!?|,| ; |μ| <|> | |°| ^]” ,, 4,0

  ^ 

这里是改变性格

没有问题 ..

为什么不转义字符“\”的工作?

编辑好了..我只是tryed它的预言方式和现在的作品......我逃“与另一个”所以我的行看起来像

1,|“|第| $ |%|&| / |(|)| = | |`|”| * | + |〜|“|#| - | _ | | ”[!“:?|, |; |μ| <|> | |°| ^]” ,, 4,0

但是,这只是一种方式来做到这一点..这并不能解释为什么IBM提供的反斜杠作为转义字符( http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=% 2Fcom.ibm.db2.luw.admin.cmd.doc%2Fdoc%2Fr0008305.html )

Answer 1:

使用LOAD与ASCII /分隔的文件需要调整的文件类型修饰符(看表6,你链接的实况页的表8)。 我不太清楚,但我不记得使用反斜线作为DB2转义字符。

您可以使用其它字符分隔符为双引号chardel选项或强制使用nochardel选项没有字符分隔符。

但是...

在你的情况,你需要的特殊字符为正则表达式,所以你总是需要逃离“有‘’,”与'。我觉得没有别的办法得到这个工作。



文章来源: DB2 Load from delimitited Files - escape \" in Fields doesn't work