所以我有很多文本文件,我正在尝试将它们放入数据库中。但是这些文件是由很多人编写的。并采用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.
我无法想到一种方法,因为数据中几乎可以包含任何字符。并且有些类型会追随其他类型。我只需指向正确的方向。
答案 0 :(得分:0)
没有简单的方法来执行您所描述的内容,但是,如果您可以标准化某些组件,则可以使自己更容易。此外,如果将这些数据输入数据库,您需要构建一些结构来正确映射所有内容。
我参与过的一个示例项目:
报告来自不同的源系统,具有不同的文件类型
这些报告需要直接提供给数据库
在这种情况下,我使用了Flat-File to XML转换器和XML to XLSX转换器。源系统将提供一个“XML”外观文件,我已经从之前的项目中获得了一个XLSX转换器。网上有很多资源可以帮助你实现这一目标,但我建议你通过限制输入来避免一些麻烦。
进一步阐述:
我将各种文件类型转换为XML文件。一旦我获得了XML文件,我就会将各种字段映射到另一个XML文件,该文件将成为我的模板(JDOM / JNI),这是一个标准化数据库实际内容的组件。然后,您可以使用基于重要字段的正则表达式,这些字段可能需要以特定方式格式化,例如日期格式或货币值。这样我们就可以标准化各个领域。然后我通过Web服务SOAP UI发布了最终组件。
可能出现的问题: