/ / Какво е най-доброто решение за разбор на файлове за конвертиране на файлове? - powerhell, ironpython, etl, fileparsing

Какво е най-доброто решение за архивиране на файлове за конвертиране на файлове? - powershell, ironpython, etl, fileparsing

Търся най-доброто решение за обичайразбор на файлове за нашите рутинни процедури за импортиране на предприятия. Искам основно да променя един файлов формат в стандартен файлов формат и да има една рутина, която внася тези данни в базата данни. Трябва да мога да създавам персонализирани скриптове за всеки клиент, тъй като е трудно да накара клиента да се съобрази със стандартния или шаблонния формат. Разгледах PowerShell и Iron Python, за да направя това досега, но не съм сигурен, че това е маршрутът, който искам да отида. Аз също погледнах някои инструменти като Talend, което е инструмент за плъзгане и пускане, който може или не може да ми даде това, което искам по отношение на гъвкавостта. Ние сме .NET магазин и сме създали потребителски код, за да направим това в миналото, но имам нужда от нещо, което е по-бързо да се създаде след това кодиране на персонализирани функции за синтактичен анализ всеки път, когато получим нов файлов формат.

Отговори:

0 за отговор № 1

Python е чудесен за този тип неща. Ето защо използваме всеки нов трансфер на клиенти е ново приключение и Python ни дава гъвкавост да реагираме бързо.


редактиране, Всички скриптове на python, които четат файлове, са "персонализирани файлови парсери". Без действителен пример, не е разумно да се дава подробен пример.

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

Това е "всичко, което трябва да има" на потребителски файлparser ". Ако анализирате .csv или .xml файлове, тогава Python има модули за това. Ако анализирате файлове с фиксиран формат, ще използвате операции за рязане на низове. Ако анализирате други файлове (X12? JSON? YAML?), Ще се нуждаете от подходящи парсери.

Tab-разделител.

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

2 за отговор № 2

В зависимост от сложността и променливостта на вашата работа, трябва да имате предвид ETL инструмент като SSIS (SQL Server Integration Services).