DATATYPER
Faktatabeller har typisk mange flere rader enn dimensjonstabeller. Derfor tilstreber vi at faktatabellene er så smal som mulig, altså har så få kolonner som mulig med så kompakte datatyper som mulig. Hovedregelen er derfor at en faktatabell kun skal inneholde fakta (tallverdier) og fremmednøkler til dimensjonstabeller. Dersom tekst er en del av faktaene, som f.eks. en beskrivelse eller kommentar som er unik for faktaverdiene, så kan man vurdere å ta disse med i faktatabellen. Men vær obs på at dette potensielt kan øke minnebehovet betraktelig. Vurder å flytte dette ut i en egen tabell dersom kolonnen er blissen (ofte tom, som f.eks. et kommentarfelt som skjelden benyttes) eller at den samme kommentaren går igjen.
Når du implementerer datamodellen din som et datavarehus er det viktig å ha kontroll på datatypen både når du oppretter tabeller i databasen og når du koder ETL pakker i SSIS. Her er en tabell som inneholder de ulike datatypene som benyttes. Så lenge man er i Microsoft sin verden med SQL Server og SSIS og C# så er det kompatible datatyper (selv om de heter forskjellig), men vær obs på at når du konverterer fra Oracle datatype til SQL Server datatyper så er det ikke alltid en en til en mapping mellom disse. Tabellen viser da forslag til konvertering, men ofte må du bestemme dette ut i fra de faktiske dataene som lagres i databasen.
SQL Server |
Oracle |
SSIS |
C# |
Minnekrav |
Value |
||||
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-data-type-mappings (SQL Server / C#)
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/oracle-data-type-mappings (Oracle / C#)
https://docs.microsoft.com/en-us/sql/integration-services/data-flow/integration-services-data-types?view=sql-server-2017 (SSIS)
https://docs.oracle.com/cd/B19306_01/gateways.102/b14270/apa.htm (SQL Server / Oracle)
https://oakdome.com/programming/SSIS_Devart_OracleDataConversion.php (Oracle / SSIS)
https://www.red-gate.com/simple-talk/sql/ssis/working-with-ssis-data-types/ (SSIS)
https://link.springer.com/content/pdf/bbm%3A978-1-4302-4792-0%2F1.pdf (SQL Server / Oracle / DB2 / SSIS / Excel / Access
http://www.carlprothman.net/Technology/DataTypeMapping/tabid/97/Default.aspx (ADO Data Type / Visual Basic / Access / SQL Server / Oracle / .NET Framework)
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/oracle-data-type-mappings (Oracle / C#)
https://docs.microsoft.com/en-us/sql/integration-services/data-flow/integration-services-data-types?view=sql-server-2017 (SSIS)
https://docs.oracle.com/cd/B19306_01/gateways.102/b14270/apa.htm (SQL Server / Oracle)
https://oakdome.com/programming/SSIS_Devart_OracleDataConversion.php (Oracle / SSIS)
https://www.red-gate.com/simple-talk/sql/ssis/working-with-ssis-data-types/ (SSIS)
https://link.springer.com/content/pdf/bbm%3A978-1-4302-4792-0%2F1.pdf (SQL Server / Oracle / DB2 / SSIS / Excel / Access
http://www.carlprothman.net/Technology/DataTypeMapping/tabid/97/Default.aspx (ADO Data Type / Visual Basic / Access / SQL Server / Oracle / .NET Framework)
KONVERTERING AV DATATYPER FRA ORACLE TIL SQL SERVER
Oracle konverterer sine data typer til SQL Server data typer. Tabellen under inneholder den standard mappingen som benyttes:
Oracle | SQL Server | SSIS | C# | Bytes |
---|---|---|---|---|
bfile | varbinary(max) | cell3_1 | cell4_1 | cell5_1 |
binary_double | float[53] | cell3_2 | cell4_2 | cell5_2 |
binary_float | float[53] | cell3_3 | cell4_3 | cell5_3 |
binary_integer | int | cell3_4 | cell4_4 | cell5_4 |
blob | varbinary(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
boolean | bit | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
char | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
char varying | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
character | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
character varying | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
character | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
character varying | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
clob | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
date | datetime2[0] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
dec | dec[38][0] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
decimal | float[53] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
double precision | float[53] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
float | float[53] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
int | int | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
integer | int | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
long | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
long raw | varbinary(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
long raw[*..8000]* | varbinary[*] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
long raw[8001..*]* | varbinary(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
national char | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
national char varying | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
national character | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
national character varying** | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
national character varying* | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
nchar | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
nclob | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
number | float[53] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
numeric | float[53] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
nvarchar2 | nvarchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
pls_integer | int | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
raw | varbinary(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
real | float[53] | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
rowid | uniqueidentifier | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
signtype | smallint | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
smallint | smallint | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
string | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
timestamp | datetime2 | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
timestamp with local time zone | datetimeoffset | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
timestamp with time zone | datetimeoffset | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
urowid | uniqueidentifier | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
varchar | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
varchar2 | varchar(max) | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |
xmltype | xml | xxxxxxxxxxx | xxxxxxxxxxx | xxxxxxxxxxx |