在 CR 和 LF 之间转换带有空格的文本文件

Converting text file with spaces between CR & LF

我以前从未见过这一行结束,我正在尝试将文件加载到数据库中。

线条的宽度都是固定的。在包含数据的 CSV 文本(长度逐行变化)之后,有一个 CR 后跟多个空格并以 LF 结尾。空格提供填充以均衡线宽。

Line1,Data 1,Data  2,Data 3,4,50D20202020200A
Line2,Data 11,Data 21,Data 31,41,510D2020200A
Line3,Data12,Data22,Data 32,42,520D202020200A

我正准备用 C# 中的流 reader / writer 来处理这个问题,但是每个月有 40 个文件进来,如果有办法一次性全部转换而不是一行一次,我宁愿那样做。

有什么想法吗?

如果您在整个流程的正确位置实施流的逐行处理,则它不一定是瓶颈。

当我不得不做这种预处理时,我在入站文件夹上放了一个文件夹监视,然后自动拾取每个文件并在到达时处理它,将原始文件放入存档文件夹并写入处理后的文件到另一个位置,数据将从该位置被解析或加载到数据库中。除非您有不寻常的实时要求,否则您永远不会注意到这种开销。如果您 do 有实时要求,与批处理数据文件将面临的所有其他问题相比,这个问题将显得微不足道:)

但您甚至可能根本不需要执行预处理步骤。您没有指出您将使用哪个数据库或您计划如何加载数据,但许多数据库确实包含处理固定长度记录的实用程序。过去,固定格式文件带有各种可以想象的奇怪格式(并且包含各种必须剥离或转换的内容)。因此,这些实用程序在执行此类任务时往往非常高效。根据我的经验,它们可以很容易地比逐行处理快至少一个数量级,这可以在较大的批量负载上产生真正的差异。

如果您的数据库没有良好的批量导入处理工具,已经编写了许多开源或免费软件实用程序,它们几乎可以满足您的需要。您可以在 GitHub 和其他地方找到它们。例如,NPM replacehere and zzzprojects findandreplace is here.

对于允许您在开发更强大的解决方案时预览所有更改的快速而肮脏的方法,许多文本编辑器都可以 find and replace in multiple files。我过去曾成功地使用过这种方法。例如,这是 NotePad++ 中的 window,它允许您使用 RegEx 删除或更改所有符合定义条件的文件中的任何内容。