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.
piątek, 21 maja 2010
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz