문제

엔터프라이즈 가져 오기 루틴을위한 사용자 정의 파일 구문 분석을위한 최상의 솔루션을 찾고 있습니다. 기본적으로 하나의 파일 형식을 표준 파일 형식으로 변경하고 해당 데이터를 데이터베이스로 가져 오는 루틴이 하나 있습니다. 고객이 표준 또는 템플릿 형식을 준수하기가 어렵 기 때문에 각 클라이언트에 대한 사용자 정의 스크립트를 만들 수 있어야합니다. 나는 지금까지 이것을하기 위해 PowerShell과 Iron Python을 보았지만 이것이 내가 가고 싶은 경로인지 확신하지 못한다. 나는 또한 유연성만큼 원하는 것을 줄 수도 있고하지 않을 수있는 드래그 앤 드롭 스타일 도구 인 Talend와 같은 일부 도구를 살펴 보았습니다. 우리는 .NET 상점이며 과거에이를 수행하기 위해 사용자 정의 코드를 만들었지 만 새 파일 형식을 얻을 때마다 사용자 정의 구문 분석 기능을 더 빠르게 만들 수있는 것이 필요합니다.

도움이 되었습니까?

해결책

파이썬은 이런 종류의 것에 대해 훌륭합니다. 그것이 우리가 사용하는 이유입니다. 각각의 새로운 고객 이전은 새로운 모험이며 Python은 우리에게 신속하게 대응할 수있는 유연성을 제공합니다.


편집하다. 파일을 읽는 모든 파이썬 스크립트는 "사용자 정의 파일 파서"입니다. 실제 예제가 없으면 자세한 예를 제공하는 것은 합리적이지 않습니다.

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

그것은 "사용자 정의 파일 파서"에 관한 모든 것입니다. .csv 또는 .xml 파일을 구문 분석하는 경우 Python에는 모듈이 있습니다. 고정식 파일을 구문 분석하는 경우 String Slicing 작업을 사용합니다. 다른 파일을 구문 분석하고 있다면 (x12? json? yaml?) 적절한 파서가 필요합니다.

탭 델리.

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

다른 팁

작업의 복잡성과 변동성에 따라 SSIS (SQL Server Integration Services)와 같은 ETL 도구를 고려해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top