Fra*_* R. 2 database format informix etl delimiter
我最近从 Informix DB 卸载了一个客户表,但由于客户名称列包含非转义的竖线(管道符号)字符,这是源数据库中的默认 DBDELIMITER,因此有几行被拒绝。我发现他们的客户表单中的字段有一个输入掩码,允许输入任何字母数字字符,其中可以包括任何字母、数字或符号。因此,我说服用户对该列运行全面更新,将管道符号更改为分号。我还发现其他行在不同的列中包含星号和逗号。我可以想象如果这张表以 csv 格式卸载会发生什么,或者星号会造成什么损害!
定义为分隔符的最佳字符是什么?如果表格已经被管道、逗号、星号、制表符、反斜杠等污染,清理它们的最佳方法是什么?
在我的工作中,我必须处理大量的叙事数据。这始终是一场噩梦,因为用户很容易将任何字符放入其中,包括不可打印的字符。您可以运行清理操作,但每次加载数据时都必须执行此操作,而且它可能不会永远有效。最终有人会输入您选择的每个字符作为分隔符,如果您的 CSV 处理库可以正确处理转义,这不是问题,但许多不能。如果这是一次性加载/卸载,您可能没问题,但如果您必须更频繁地执行此操作....
过去,我已将分隔符更改为反引号 '`'、波浪号 '~' 或插入符号 '^'。目前的努力都失败了。我能想到的最佳解决方案是根本不使用 CSV 格式。我切换到 XML。即便如此,仍然存在 XML 非法字符,但这些可以用 atlassian-xml-cleaner-0.1.jar 翻译出来。