Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: 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.Wojciech Gardziński edytował(a) ten post dnia 22.05.10 o godzinie 19:35
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Import tekstu przez ODBC

Pokaz wydajności powyższego.

Dokładnie taki sam film, jak powyżej, ale plik tekstowy ma PONAD 2 MILIONY WIERSZY

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

Wydajność:
Sam filtrowany import do tabeli Accessa = 40 SEKUND
(50.000 wierszy / sek)
Całość - ze wszystkimi przeróbkami, kopiami, obliczeniami, wyklejkami - razem 212 sekund
(Komputer: cieniutki - 1.5 GHz, 1 GB RAM)

To mniej więcej sprzedaż dużej firmy z całego roku z dokładnością do POZYCJI faktury, czyli "do dokumentu" = wszystko.
4 minuty i po problemie. Nieźle.Wojciech Gardziński edytował(a) ten post dnia 24.05.10 o godzinie 15:48

Następna dyskusja:

Import tekstu przez ODBC - ...




Wyślij zaproszenie do