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