piątek, 21 maja 2010

Import tekstu przez ODBC

Problem:
Import tekstu do Excela i do baz danych. Ogólnie.

Nie dlatego, że trudno to oprogramować - to umieją wszyscy.    
Problem jest w tym, że twórcy aplikacji transakcyjnych, z których    
takie eksporty zwykle pochodzą, wsadzają do tych tekstów ogromną    
ilość niepotrzebnych linii, dziwnych znaków, itp.
Podstawowe wady to import całości tekstu, który czasami nie    
mieści się w arkuszu oraz dalej zawiera owe 'śmieciowe' linie,    
które w Excelu trzeba dopiero rozpoznać i ręcznie usunąć -    
koszmar.

Jak się go rozwiązuje?

1) Przez BEZNADZIEJNĄ opcję Excela 'import tekstu'. Nie dość że    
jest zła, to jest zła od 20 lat, a we wszystkich książkach jest    
opisywana jako 'dostęp Excela do danych'. Kto co i jak zna, tak    
opisuje.
A kto to próbował automatyzować przez VBA wie, jakie są z tym    
problemy.

2) Przez odczyt linia-po-linii przez VBA
Efekt duuuuużo lepszy! Czytamy jak i co chcemy, wsadzamy do arkusza    
również z pełną kontrolą. Ale są problemy - dane pozostają w    
arkuszu i trudno zrobić z tego 'zbiorcza bazę danych'

3) Przez ODBC, np. kwerendą
Rozwiązania zdecydowanie poprawne, ale jest problem - trzeba    
zdefiniować plik definicji takiego importu, czyli 'schema.ini' -    
można z tego zrobić doktorat, czyli fajne, ale skomplikowane.

4) Można również wykorzystać SPECJALNE NARZĘDZIE do tego celu -    
AFIN.NET.TextConverter. Ale, czasami, warto jednak pamiętać, że    
ODBC jest po prostu bardzo szybkie...

5) A może tak? - przez ODBC, ale wielokrokowo, parametrycznie, ale    
bezpośrednio do jakiejś sensownej BAZY DANYCH, tu: do pliku    
Accessa.
Jedno, co trzeba umieć, to bardzo niewielkie podstawy SQL.

Film:
http://afin.net/webcasts/Demo_ImportTextViaOdbc1.swf

Wnioski:
Można. Dość łatwo, ale, przede wszystkim, BARDZO SZYBKO I    
WYGODNIE!
I parametrycznie - gdy pojawia się nowy plik tekstowy - dogranie go    
do bazy danych to moment.

Ale proszę jednak zwrócić uwagę na pewne novum w tej metodzie:
Import tekstu jest zwykle jednoetapowy - plik importuje się i już:    
albo otwiera w Excelu, albo czyta linia po linii, albo przez ODBC,    
definiując owo schema.ini. Novum polega na tym, że tu plik    
tekstowy zaczytuje się jednym ruchem się do bazy zewnętrznej już    
przefiltrowany, ale wszystkie dalsze ruchy: podział na kolumny i    
wszystkie poprawki robi się na tabeli w bazie danych - a tu jest    
naprawdę dużo możliwości.
Dopiero na sam koniec dane trafiają do tabeli wynikowej lub są    
eksportowane do plików zewnętrznych.

Ja lepszej metody nie znam.
A AFIN.NET to ładnie automatyzuje - jeden klik.

Brak komentarzy:

Prześlij komentarz