5.19. "Import danych"

Aby ułatwić przenoszenie danych z innego oprogramowania, wprowadzono - w wersji V1.9 - moduł importu danych, umożliwiający pobieranie najważniejszych w cenniku, wykazie kontrahentów tudzież rejestrze magazynowym danych - z pliku w (pseudo)standardzie CSV.

Pliki takiego formatu są w łatwy sposób możliwe do wygenerowania spod Excela, albo OOCalc-a. Smabi czyta pliki CSV w tzw. wariancie „tab-delimited” - tzn. takie, gdzie poszczególne kolumny danych odseparowane są znakiem tabulatora (kod 9). Aby otrzymać właśnie tak przygotowany plik, należy - posługując się np. OOCalc-iem - wczytać arkusz kalkulacyjny, następnie wybrać "Zapisz jako...", potem jako "Typ pliku" wskazać: "Tekst CSV (.csv)", a po kliknięciu przycisku "Zapisz", trzeba jeszcze (istotne!) w oknie "Opcje pola" wybrać:

Podobnie będzie miała się sprawa z Excelem; w razie, gdyby w jego przypadku nie był możliwy zapis w wykorzystaniem zestawu znaków ISO, należy otrzymany plik "tab-delimited" najpierw poddać konwersji programem "iconv" (dostępny w każdej dystrybucji Linuksa; może być także polski "konwert"), a potem można jeszcze pozbyć się "nadmiarowych" par znaków CR-LF jakimś narzędziem w rodzaju "dos2unix". Jak łatwo będzie można przekonać się dowolnym edytorem: otrzymany plik ma postać czysto tekstową. Dane z tak przygotowanego pliku będziemy w stanie zaimportować.

Wybierając zatem w określony sposób moduł importu danych, tym samym decydujemy, do której z tabel danych programu dane będą importowane: do cennika, listy któregoś z magazynów, czy do wykazu kontrahentów.

[formularz importu]
Okno formularza importu - właśnie przyporządkowano kolumny z pliku CSV, z którego zaraz będą importowane dane.

Bezpośrednio po wybraniu modułów ujrzymy ekran z wykazem pól rekordu wybranej tabeli (tej, do której chcemy dokonać importu danych), i przyporządkowaniem do niej odpowiednich kolumn importowanego pliku CSV. Oczywiście, na razie wszędzie tam widać zera, bowiem żadnego pliku jeszcze nie wczytano, więc i przyporządkowanie czegokolwiek nie jest możliwe. Zaraz obok liczb obrazujących przyporządkowanie (z ich lewej strony) zauważymy litery: "C, D, I, N, L"; oznaczają one typ danych, jaki program oczekuje w polach wybranej tabeli, odpowiednio: C - typ znakowy ("character"), D - data (w formacie "DD.MM.RRRR", np. 23.02.2008), I - liczba całkowita nieujemna, N - liczba rzeczywista nieujemna, L - "typ logiczny", czyli po prostu w importowanym pliku winny się w wybranej kolumnie pojawiać jedynie wartości "tak" lub "nie" (w takiej właśnie postaci, jako polskie słowa).

Dzięki temu opisowi łatwiej będzie przyporządkować kolumny danych odpowiednim polom rekordu. Tu należy nadmienić, że błędy mniejszego kalibru program stara się samoczynnie korygować: np. jest możliwe przyporządkowanie kolumny zawierającej same liczby polu o typie znakowym; wszak cyfry również zaliczamy do znaków pisarskich - ale odwrotnie już nie! Po wykryciu próby wpisania tekstu do pola numerycznego program zignoruje tekst, a do wskazanego pola wpisze po prostu zero, jako wartość domyślną. Należy jednak pamiętać, że taka automatyczna korekta może być przeprowadzona jedynie w niezbyt dużym zakresie - jej bardzo precyzyjny i dokładny wariant dość szybko mógłby osiągnąć obecne rozmiary programu, służąc jedynie do rozpoznawania i korekty danych - i w większości przypadków ogranicza się do zastępowania nieprawidłowych (w danym polu) wartości - wartościami domyślnymi, aby nie przerywać procesu importu. Jednak mimo takiej korekty traci się, poprzez błędne przyporządkowanie, część korzyści oferowanych przez moduł importu, skoro niektóre niezbędne dane w efekcie błędnego przyporządkowania muszą być przez program zignorowane - warto więc robić to uważnie.

Należy także pamiętać o funkcji niektórych wielkości: na przykład: aby dane przeznaczone dla cennika zostały przyjęte, musi być importowana co najmniej kolumna z nazwami poszczególnych artykułów bądź usług - nazwy te winny być unikalne, jeśli jednocześnie nie importujemy symboli (te muszą być unikalne obowiązkowo). Podobnie w przypadku listy kontrahentów wczytywane być muszą chociaż kolumny "Identyfikator" ("etykietka" - musi być unikalna, i nie występująca dotychczas w bazie), zaś w przypadku magazynu zostaną przyjęte jedynie te wiersze z pliku, które zawierają symbole już występujące w cenniku. Również w przypadku magazynu, jeśli import miałby się odbywać do wielu osobnych obszarów magazynowych, należy pamiętać, aby przed importem zostały one założone w bazie danych, i aby posługiwać się ich nazwami w odpowiedniej kolumnie. W przypadku stwierdzenia niezgodności program zastąpi błędną nazwę magazynu domyślną nazwą "główny" - przenosząc tym samym dane importowanego rekordu do tego właśnie obszaru magazynowego.

Tak więc istotna jest również świadomość, co się właściwie w trakcie importu dzieje.

Po dokonaniu przyporządkowania kolumn do pól (program pozwala na wielokrotne przyporządkowanie jednej i tej samej kolumny do różnych pól, jeśli zachodzi taka potrzeba), wybieramy operację "Importuj dane". Mamy tu dwie możliwości:

Wybór wariantu pozostawiamy użytkownikowi - aczkolwiek pierwszy, "łagodniejszy" wariant, wydaje się w 90% przypadków wystarczający.

Jak łatwo będzie można się przekonać: po prawidłowo przeprowadzonym imporcie w wybranej tabeli docelowej znajdą się nowe pozycje, tym razem już bez konieczności "ręcznego wprowadzania od podstaw", a po prostu do ew. uzupełnienia innymi danymi.

Warto również pamiętać, że format pliku "CSV tab-delimited" jest bardzo łatwą do wykorzystania "formą pośrednią" w przypadku przenoszenia do Smabiego danych z jakiegokolwiek innego programu. Smabi ma dość tolerancyjne podejście do tego formatu, i zasadniczo wymaga jedynie, aby plik CSV spełniał warunki:

  1. Rozdzielenie kolumn w wierszu znakiem "tabulatora" (kod 9)
  2. Kodowanie znaków wg normy ISO-8859-2
  3. Kolumny dat w formacie DD.MM.RRRR (z kropką jako separatorem)
  4. Kolumny wartości logicznych zawierające jedynie słowa "tak" lub "nie" - na oznaczenie posiadania (lub nie) jakiejś cechy
  5. Otaczanie pól tekstowych znakiem separatora tekstu (") nie jest konieczne - ale jeśli program użyty do przygotowania pliku CSV będzie koniecznie chciał jakiegoś separatora jednak użyć, to należy wskazać mu właśnie ten znak (kod 34) jako separator. Nie jest również konieczne "dublowanie" znaków cudzysłowu (" -> "") w polach, które mieszczą teksty zawierające wewnątrz te znaki.
Ponieważ warunki 3 i 4 dotyczą jedynie sytuacji wyjątkowych - gdy daty i wartości logiczne rzeczywiście są importowane - zaś warunek 5 właściwie... nie jest warunkiem, bo mówi raczej o braku potrzeby, najistotniejsze - a zarazem łatwe do spełnienia - są warunki 1 i 2. Tak więc, jak widać, eksport danych z innego programu do tak scharakteryzowanego pliku - w celu przeniesienia ich potem do Smabiego - jest sprawą relatywnie niekłopotliwą.

Poprzednia strona | Następna strona | Spis treści
Strona główna serwisu programu