Migracja danych między dwoma różnymi systemami baz danych zawsze wiąże się z konwersją typów danych. W tym poście przybliżę pojęcie migracji danych oraz pokażę jak zamienić typy danych z Microsoft SQL Server na typy danych bazy Teradata.
Migracja danych
Migracja danych to nic innego jak jednorazowe przeniesienie danych z jednego systemu informatycznego, bazy danych do innego repozytorium. Zazwyczaj jest to podróż w jedną stronę, angażuje wiele działów przedsiębiorstwa oraz pociąga za sobą wygaszenie dotychczasowego systemu bazy danych.
Migracje zbiorów danych do nowych baz zawsze są wynikiem wymagań stawianych wobec obecnych systemów informatycznych. Zmiana ma zapewnić większą wydajność zapytań, łatwiejszą skalowalność systemu oraz sprawniejsze zarządzenie zbiorami danych.
Typy danych Teradata
Każdy atrybut tabeli powiązany jest z konkretnym typem danych określającym jakie wartości będę w nim przechowywane.
Poniższa tabela przedstawia najczęściej pojawiające się typy danych w bazie Teradata wraz z ich rozmiarem i zakresem wartości:
Typ danych | Rozmiar (byte) | Zakres wartości |
BYTEINT | 1 | -128 – +127 |
SMALLINT | 2 | -32768 – +32767 |
INTEGER | 4 | -2 147 483 648 – +2 147 483 647 |
BIGINT | 8 | -9 233 372 036 854 775 808 – +9 233 372 036 854 775 807 |
DECIMAL (m,n) | 1-16 | |
NUMERIC | 1-16 | |
FLOAT | 8 | |
CHAR (x) | zmienny | 1 – 64 000 |
VARCHAR (x) | zmienny | 1 – 64 000 |
DATE | 4 | yyyymmdd |
TIME | 6 lub 8 | hh:mm:ss[.ssssss] |
TIMESTAMP | 10 lub 12 | yyyy-mm-dd hh:mm:ss |
Od SQL Server do Teradaty
Typy danych w poszczególnych systemach informatycznych praktycznie zawsze się różnią – jedne są bardziej szczegółowe pozwalając na dokładniejsze sprecyzowanie atrybutu jak MONEY, a inne bardziej ogólne jak DECIMAL. Najważniejsze, to dobrać odpowiedni typ danych z odpowiednim rozmiarem.
Konwertując typy danych między bazami danych zawsze pamiętaj o :
- Dla danych alfanumerycznych zawsze sprawdzaj maksymalna długość pola i staraj się dobierać długość mając na uwadze dane, które pojawić się w przyszłości
- Dla danych numerycznych zawsze sprawdź najmniejszą i największą wartość atrybutu
- Jeśli precyzja (n) dla atrybutu DECIMAL wynosi 0 rozważ zastosowanie BYTEINT, SMALLINT, INTEGER albo BIGINT w zależności od maksymalnych wartości atrybutu
- Do flag typu 0 lub 1 zawsze stosuj najmniejszy możliwy typ danych – BYTEINT
- Określając typ danych dla tego samego atrybutu w różnych tabelach zawsze stosuj ten sam typ danych i ta samą precyzję (zwłaszcza jeśli atrybut jest wykorzystywany w złączeniach tabel)
Poniższa tabela przedstawia konwersję typów danych dla najpopularniejszych typów danych bazy SQL Server:
Typ danych SQL Server | Typ danych Teradata | Uwagi |
BIT | BYTEINT | |
TINYINT | SMALLINT | jeśli wszystkie wartości są poniżej 127, użyj BYTEINT |
SMALLINT | SMALLINT | |
INTEGER | INTEGER | |
BIGINT | BIGINT | |
DECIMAL | DECIMAL | jeśli precyzja wynosi 0, np. DECIMAL(3,0) rozważ BYTEINT – BIGINT |
NUMERIC | DECIMAL | |
MONEY | DECIMAL | |
SMALLMONEY | DECIMAL | |
FLOAT | DECIMAL | |
REAL | DECIMAL | |
DATE | DATE | |
DATETIME | TIMESTAMP | |
SMALLDATETIME | TIMESTAMP | |
CHAR (x) | CHAR (x) | |
VARCHAR (x) | VARCHAR (x) |