什么是转换文件的最佳文件解析解决方案?

时间:2009-12-09 22:04:38

标签: powershell ironpython etl fileparsing

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

2 个答案:

答案 0 :(得分:2)

根据工作的复杂性和可变性,您应该考虑像SSIS(SQL Server Integration Services)这样的ETL工具。

答案 1 :(得分:0)

Python非常适合这种事情。这就是我们使用的原因。每次新的客户转移都是一次新的冒险,Python让我们可以灵活地快速响应。


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

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

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

标签-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 )
    ...