2009-12-09 65 views
0

我正在为我们的企业导入例程寻找自定义文件解析的最佳解决方案。我想基本上将一种文件格式更改为标准文件格式,并有一个将该数据导入数据库的例程。我需要能够为每个客户创建自定义脚本,因为很难让客户遵守标准或模板格式。我已经看过PowerShell和Iron Python做到这一点,但我不确定这是我想要去的路线。我也看过一些工具,比如Talend,这是一个拖放式工具,它可能会或可能不会给我我想要的灵活性。我们是一个.NET商店,并且已经创建了自定义代码来完成此操作,但是我需要更快创建的代码,然后在每次获取新文件格式时编写自定义分析函数。转换文件的最佳文件解析解决方案是什么?

回答

0

Python对此很棒之类的事情。这就是我们使用的原因。每次新的客户转移都是一次新的冒险,而Python为我们提供了快速响应的灵活性。


编辑。所有读取文件的python脚本都是“自定义文件解析器”。没有一个实际的例子,提供一个详细的例子是不明智的。

with open("some file", "r") as source: 
    for line in source: 
     process(line) 

这是对所有有一个“自定义文件分析器”。如果你正在解析.csv或.xml文件,那么Python有模块。如果你正在解析固定格式的文件,你会使用字符串切片操作。如果你解析其他文件(X12?JSON?YAML?),你需要适当的解析器。

Tab-Delim

from collections import namedtuple 
RecordLayout = namedtuple('RecordLayout',['field1','field2','field3',...]) 
def process(aLine): 
    record = RecordLayout(aLine.split('\t')) 
    ... 

固定的版面

from collections import namedtuple 
RecordLayout = namedtuple('RecordLayout',['field1','field2','field3',...]) 
def process(aLine): 
    fields = (aLine[:10], aLine[10:20], aLine[20:30], ...) 
    record = RecordLayout(fields) 
    ... 
+0

你能告诉我一个你用来解析的示例脚本吗?我还没有找到任何显示自定义文件解析的好样本。 – Ryan 2009-12-10 17:42:53

+0

@Ryan:读取文件的所有python程序都是“自定义文件分析器”。您有内置的XML,CSV,JSON,YAML和其他一些解析器。您可以下载XLS电子表格的解析器。由于您的问题只是说“自定义”,因此尝试提供任何代码是不明智的。你必须提供一个示例文件。 – 2009-12-10 18:18:33

+0

我们收到的文件有时会采用奇怪的格式,可能需要我们做一些自定义分析来获取我们想要的数据。它们大多数是制表符分隔的,但有时甚至不会使用制表符分隔的设置加载SSIS。下面是我们如何使用C#导入我们加载的文件之一的解析。 string lname = line.Substring(10,20).Trim(); string fname = line.Substring(30,10).Trim(); string mi = line.Substring(40,1).Trim(); – Ryan 2009-12-10 20:13:33

2

根据不同的复杂性和工作的变化,你应该考虑像SSIS的ETL工具(SQL Server集成服务)。

+0

我们收到的一些文件很难分析。除了标准的文件导入之外,还有什么特殊的工具可以与SSIS一起提供吗? – Ryan 2009-12-10 00:29:27

+0

请详细说明格式。一般来说,SSIS将允许您解析任何格式 - 固定字段,分隔符,XML等。如有必要,编写符合SSIS的自己的解析器非常容易,因此只需解析函数就可以定制。 – 2009-12-10 02:02:36

+0

我没有意识到你可以在SSIS中使用自定义的解析函数。我将不得不更多地考虑这一点。谢谢!我正在考虑购买像Advanced ETL Processor Ent这样的工具。 – Ryan 2009-12-10 17:19:14

相关问题