动态指定数据输入

时间:2017-09-08 18:53:10

标签: c++

所以我有很多文本文件,我正在尝试将它们放入数据库中。但是这些文件是由很多人编写的。并采用ALLLLL不同的格式。

不是为每个文件编写一个程序来导入它,而是想尝试制作一个可以全部导入它们的程序。但我无法完全理解如何处理它。

这就是我想做的事情:

#>prog somfile.txt
File data format?: U\tT:D

我得到了db和ext ready我只是不确定如何构建一个分隔列表解析器。

在我的节目中,我喜欢得到;每行类似:

std::string format = U\tT:D ; //set from input
std::string line = "Bob Dole<tab>11-13-17:25"; //Set from txt file readline
map<std::string,char> out = somefunc(line,format);

我希望:

out['U'] = "bob";
out['T'] = "11-13-17";
out['D'] = "25";
out['n'] = ""; //Nothing cause it wasn't there.

我无法想到一种方法,因为数据中几乎可以包含任何字符。并且有些类型会追随其他类型。我只需指向正确的方向。

1 个答案:

答案 0 :(得分:0)

没有简单的方法来执行您所描述的内容,但是,如果您可以标准化某些组件,则可以使自己更容易。此外,如果将这些数据输入数据库,您需要构建一些结构来正确映射所有内容。

我参与过的一个示例项目:

  1. 报告来自不同的源系统,具有不同的文件类型

  2. 这些报告需要直接提供给数据库

  3. 在这种情况下,我使用了Flat-File to XML转换器和XML to XLSX转换器。源系统将提供一个“XML”外观文件,我已经从之前的项目中获得了一个XLSX转换器。网上有很多资源可以帮助你实现这一目标,但我建议你通过限制输入来避免一些麻烦。

    进一步阐述:

    我将各种文件类型转换为XML文件。一旦我获得了XML文件,我就会将各种字段映射到另一个XML文件,该文件将成为我的模板(JDOM / JNI),这是一个标准化数据库实际内容的组件。然后,您可以使用基于重要字段的正则表达式,这些字段可能需要以特定方式格式化,例如日期格式或货币值。这样我们就可以标准化各个领域。然后我通过Web服务SOAP UI发布了最终组件。

    可能出现的问题:

    1. 特殊字符 - 您可以使用脚本或直接在程序中处理此问题
    2. 文件类型限制 - 您接受的文件类型越多,您需要进行的转换次数就越多,特别是如果有多种分隔符将数据分开。