QBS
>> Suplementy i Dokumentacja Techniczna do Q-Line 3000
>> Opis QCONL'a
Format pliku zewnętrznego .qtr - czyli Q-Line Text Archive (exportowego)
Plik jest plikiem tekstowym. Jeżeli został wyeksportowany z włączoną kompresją, to wtedy
jest zwykłym plikiem tekstowym skompresowanym w formacie GZIP.
Plik składa się z kolejnych poleceń QTR.
Każde polecenie ma postać:
COMMAND_ID(<parameters>){<body>}
gdzie
- COMMAND_ID - identyfikator polecenia
- parameters - parametry polecenia postaci parametr=wartość(opcjonalne)
- body - ciało polecenia (opcjonalne)
Białe znaki są ignorowane, komentarze można wstawiać od // do końca linii
i pomiędzy /* */. Wszystkie Stringi w pliku są w postaci znormalizowanej tzn. format jak w poleceniu printf w języku C. Polskie litery eksportowane są w formacie domyślnym środowiska WIN-1250 dla windows i ISO-8859-2 dla UNIX.
Lista poleceń QTR
- FILE_START - Rozpoczęcie pliku QTR (To musi być pierwsze polecenie w pliku)
- parametry
- VERSION - numer wersji struktur danych (domyślnie 1)
- DATE - string z datą wyeksportowania w formacie YYYY.MM.DD
- ciało - brak!
- TABLE_START - Rozpoczęcie Tabeli
- parametry
- IMPORTTYPE - opcja importu. Wszystkie rekordy weryfikowane są wg. bieżącego uporządkowania (IMPORTORDER)
- MODIFY - dogrywane są wszystkie pozycje. Jeżeli istnieją już to są modyfikowane na nowe, te zaś które nie istniały są dodawane.
Jest opcja domyślna
- NEWONLY - wgrywane są tylko pozycje które jeszcze nie istniały w bazie, te które już istnieją są ignorowane
- DELALL - najpierw kasowana jest cała baza,
następnie wgrywane wszystkie pozycje z pliku
- NAME - string z nazwą tabeli
- IMPORTORDER - string z nazwą uporządkowania wg którego będą sprawdzane i wyszukiwane wartości
- NARROW - Rekord z zawężeniem tabeli - wg klucza IMPORTORDER. Import tabeli zawężonej - zawążone wartości będą automatycznie dodawane, DELALL - skasuje tylko zawężony fragment
- ciało - brak!
- HEAD - Nagłówek Tabeli
- parametry - brak!
- ciało - składa się z listy par (jedna dla pola tabeli).Każda para to identyfikator i identyfikator pola.
Oto możliwe identyfikatory typów:
- INT - liczba całkowita
- DOUBLE - liczba rzeczywista
- STRING - ciąg znaków w cudzysłowiach ""
- REC - Rekord czyli jedna pozycja w tabeli. Po REC może znów nastąpić TABLE - będzie to oznaczało tabele wewnętrzną do tego rekordu (Historie)
- parametry - brak!
- ciało - wartości pól kolejno podane zgodnie z kolejnością podaną w nagłówku tabeli
- TABLE_STOP - Zakończenie Tabeli
- parametry
- RECCOUNT - liczba wyeksportowanych pozycji w tabeli
- NAME - string z datą wyeksportowania w formacie YYYY.MM.DD
- ciało - brak!
W plikach QTR zazwyczaj mamy rozpoczęcie pliku, kolejne tabele, a na końcu jego zakończenie
Oto przykładowy plik QTR z dwoma tabelami: GAMES i PLAYERS
FILE_START(VERSION=3 DATE="2001.05.12")
TABLE_START(IMPORTTYPE="DELALL" NAME="GAMES")
HEAD{INT ID STRING REFEREE1 STRING REFEREE2 INT TOURNAMENTID INT TEAMAID INT TEAMBID STRING TEAMA STRING TEAMB INT DATE }
REC{1 "" "" 1 1 2 "POLSKA" "ŁOTWA" 10959 }
REC{2 "" "" 1 3 4 "BUŁGARIA" "JUGOSŁAWIA" 10959 }
REC{3 "" "" 1 5 6 "CZECHY" "HOLANDIA" 10959 }
REC{4 "" "" 1 1 3 "POLSKA" "BUŁGARIA" 10960 }
REC{5 "" "" 1 4 5 "JUGOSŁAWIA" "CZECHY" 10960 }
REC{6 "" "" 1 2 6 "ŁOTWA" "HOLANDIA" 10960 }
REC{7 "" "" 1 1 5 "POLSKA" "CZECHY" 10961 }
REC{8 "" "" 1 2 3 "ŁOTWA" "BUŁGARIA" 10961 }
REC{9 "" "" 1 4 6 "JUGOSŁAWIA" "HOLANDIA" 10961 }
TABLE_STOP(RECCOUNT=9)
TABLE_START(IMPORTTYPE="DELALL" NAME="PLAYERS")
HEAD{INT ID INT NR STRING NAME STRING LASTNAME }
REC{1 1 "ANDRZEJ" "STELMACH" }
REC{2 3 "PIOTR" "GRUSZKA" }
REC{3 5 "PAWEŁ" "ZAGUMNY" }
REC{4 6 "DAWID" "MUREK" }
TABLE_STOP(RECCOUNT=4)
FILE_STOP
Funkcje exportu / importu do i z plików .qtr
Podstawowe zastosowania plików QTR
pliki QTR są dość elastycznym formatem mającym wiele zastosowań oto kilka z nich.
- backup / archiwizacja - uruchamiając backup archiwizują nam się wszystkie bazy danych
(bez baz tymczasowych i baz zaznaczeń użytkowników), jeżeli włączona jest opcja kompresji to plik w locie zostanie skompresowany i
będzie zajmował względnie mało miejsca. Zpisze się nam data wyeksportowania i numer wersji struktur danych.
Mechanizm importu sam rozpoznaje czy archiwum jest w postaci spakowanej czy nie, oraz podaje nam date wyeksportowania danych.
Jeżeli importujemy dane z poprzedniej wersji programu to zostaną one w locie przetransformowane do nowych struktur.
Jeżeli nawet cały komputer nam "padł" to zawsze można wziąć wersję instalacyjną
i wciągnąć archiwum qtr i już.
- upgrade - Dostając nową wersję programu nie tracimy danych. Nie musimy ich jeszcze raz wpisywać!
Wystarczy zrobić backup w poprzedniej wersji i wciągnąć stworzone archiwum w nowej. (Nawet jeśli nie są to kolejne wersje)
- wymiana danych - ponieważ format qtr jest prosty i realizowany w technologii "otwartej dla użytkownika" (nie ma czrnych skrzynek)
jest to idealny sposób wymiany danych. Można wyeksportować wybrane tabele z wybraną opcją importu, dla wszystkich pozycji z tabeli
bądź wybranych mechanizmem zaznaczeń. Patrz konfiguracja eksportu
Pliki Qtr mogą być od razu kompresowane popularnym formatem gzip, lub nie - zależnie od woli użytkownika.
- import - Mając archiwum qtr aby wgrać go do programu wystarczy wywołać import tego archiwum.
Mechanizm importujący poinformuje nas o dacie archiwum. Sam przetransformuje dane do odpowiedniej wersji.
Eksport na podstawie konfiguracji.
Aby wykesportować jakiś przez siebie wybrany plik danych, ustawiamy konfigurację w pliku qtr_export.cfg
Zaznaczamy, bądź nie, wybrane pozycje (zależnie od konfiguracji) i uruchamiamy eksport.
Konfiguracja exportu (narzędziowy)
Konfiguracja exportu znajduje się w pliku qtr_export.cfg. Zapisany jest on w formacie czytarki bezkontekstowej -
patrz stosowny dokument.
Cały plik jest rekordemz następującymi polami:
- Filename - nazwa pliku wynikowego (domyśline "export.qtr")
- Compression - czy kompresować plik (GZip) "YES" albo "NO" (domyślnie "YES").
- Tables - Lista tabel do wyeksportowania (zapisana w strukturze recordarray gdzie każda linijka to rekord o następujących polach
- TABLE - nazwa tabeli
- RANGE - "ALL" "SELECTED" zakres eksportowanych rekordów (wszystkie / zaznaczone)
- IMPORT_OPTION - opcja z jaką tabela będzie importowana
Konfiguracja backup'u
Konfiguracja backup'u znajduje się w pliku qtr_backup.cfg.
Zapisany jest on w formacie czytarki bezkontekstowej - patrz
stosowny dokument.
Cały plik jest rekordemz następującymi polami:
- Filename - nazwa pliku wynikowego - może zawierać ścieżkę (domyśline "backup.qtr")
- Compression - czy kompresować plik (GZip) "YES" albo "NO" (domyślnie "YES").
- BackupMode - sposób specyfikacji tabel do backupowania.
- "SKIP" - zrób backup wszystkich tabel poza podanymi w linii Tables
- "SPECIFIED" - zrób backup tabel podanych w linii Tables
- Tables - tablica typu array z listą identyfikatorów tabel. Znaczenie tej listy zależy od parametru BackupMode.
Backup'u serwera
Dodatkową opcją (Backup - ON LINE) serwer sam może co jakiś czas automatycznie wykonywać backup. Służą do tego dwa dodatkowe paremtry w pliku konfiguracyjnym qtr_backup.cfg:
- BackupTimerMode - Sposób określenia czasu automatycznego backup'u - możliwe wartości:
- OFF - backup wyłączony - nie aktywny.
- DAILY - codziennie o podanej godzinie na parametrze BackupTimerModeParam - domyślny
- PERIODIC - backup co podaną liczbę minut.
- BackupTimerModeParam - parametr określający czas backupowania - dla trybu DAILY jest to string określający godzine w formacie "hh:mm",
dla trybu PERIODIC jest to liczba z ilością minut.
Przykład pliku konfiguracynego qtr_backup.cfg
record
{
// Nazwa pliku docelowego
FileName = "backups/backup.qtr";
// SKIP | SPECIFIED
Compression = "YES";
BackupMode = "SKIP";
// OFF | DAILY | PERIODIC
BackupTimerMode = "DAILY";
BackupTimerModeParam = "04:00";
// Lista tabel do wyekspotowania
Tables = array
{
// te tabele to tabele zaznaczeń, można je spokojnie pominąć
"SELECTIONNAME"; "SELECTION";
};
}