Column binding
Serwis pozwala walidować przed rozpoczęciem porównania, czy tabele można do siebie porównać. Służy do tego endpoint: POST /compare/bind
Przykład i opis body dla POST /compare/bind:
source/targetDatabaseConnectionInfo
-> informacje o źródłowej i docelowej bazie danych, opcje databaseType:POSTGRES
,ORACLE
,SQLSERVER
source/targetTables
-> lista tabel do sprawdzenia z bazy źródłowej i docelowej z informacją o nazwie schema, tabeli, kluczu głównym oraz porównywanych kolumnach poza kluczem w tabeli źródłowej i docelowej. serwis pobiera informację z bazy danych o kluczu głównym i indeksach. serwis pobiera pełną listę kolumn i sortuje ją alfanumerycznie.
{
"sourceDatabaseConnectionInfo": {
"databaseType": "POSTGRES",
"url": "jdbc:postgresql://localhost:5432/postgres",
"username": "postgres",
"password": "postgres"
},
"targetDatabaseConnectionInfo": {
"databaseType": "ORACLE",
"url": "jdbc:oracle:thin:@localhost:1521:ORCLCDB",
"username": "system",
"password": "Oracle_123"
},
"sourceTables": [
{
"schema": "test_data",
"name": "cat"
},
{
"schema": "test_data",
"name": "cat2"
},
],
"targetTables": [
{
"schema": "SYSTEM",
"name": "CAT"
},
{
"schema": "SYSTEM",
"name": "CAT2"
},
]
}
Przykład i opis response dla POST /compare/bind:
result
-> określa, czy w trakcie walidacji wystąpił jakiś ogólny błąd
message
-> w przypadku błędu określa jego powód
boundTablesList
-> lista wyników walidacji. Dla każdej tabeli z pary zwracane jest:
lista informacji o indeksach - dla każdego indeksu nazwa, czy jest unikalny oraz lista indeksów kolumn w indeksie (indeksy odnoszą się do listy wszystkich kolumn)
informacja o kluczu głównym - nazwa, oraz lista indeksów kolumn w kluczu (indeksy odnoszą się do listy wszystkich kolumn)
lista kolumn wraz z ich typami, posortowane po nazwach kolumn
nazwa schematu i tabeli
szacowany rozmiar tabeli w bajtach
W polu result
zwracana jest informacja o walidacji dopasowania klucza głównego (primaryKey
) i pozostałych kolumn (columns
).
SUCCESS
- dopasowanie się udałoWARNING
- dopasowanie jest możliwe, ale wymaga ustawienia odpowiednich flag. Lista warnings może zawierać następujące wartości:BOOLEAN_TYPE_MAPPING_BINDING_WARNING - trzeba ustawić flagę
mapBooleanTypes
na truePOSTGRES_MONEY_TYPE_MAPPING_BINDING_WARNING - trzeba ustawić flagę
mapPostgresMoneyTypeToDouble
na trueORACLE_DATE_TYPE_MAPPING_BINDING_WARNING - trzeba ustawić flagę
treatOracleDateAsTimestamp
na true
ERROR
- dopasowanie niemożliwe, opis błędu w polumessage
{
"boundTablesList": [
{
"sourceTable": {
"schema": "test_data",
"name": "cat",
"columns": {
"names": [
"color",
"id",
"name",
"owner_id"
],
"types": [
"STRING",
"BIGINT",
"STRING",
"BIGINT"
]
},
"primaryKey": {
"columns": [
1
],
"name": "cat_pkey",
"unique": true
},
"indexes": [{
"columns": [
1,3
],
"name": "cat_idx_name_color",
"unique": false
},],
"size": 90112
},
"targetTable": {
"schema": "SYSTEM",
"name": "CAT",
"columns": {
"names": [
"COLOR",
"ID",
"NAME",
"OWNER_ID"
],
"types": [
"STRING",
"BIGINT",
"STRING",
"BIGINT"
]
},
"primaryKey": {
"columns": [
1
],
"name": "SYS_C008315",
"unique": true
},
"indexes": [],
"size": 0
},
"result": {
"primaryKey": {
"result": "SUCCESS",
"warnings": null,
"message": null
},
"columns": {
"result": "SUCCESS",
"warnings": null,
"message": null
}
}
},
{
"sourceTable": {
"schema": "test_data",
"name": "cat2",
"columns": {
"names": [
"color",
"name",
"owner_id"
],
"types": [
"STRING",
"STRING",
"BIGINT"
]
},
"primaryKey": {
"columns": [
1,
0
],
"name": "cat2_pkey",
"unique": true
},
"indexes": [],
"size": 65536
},
"targetTable": {
"schema": "SYSTEM",
"name": "CAT2",
"columns": {
"names": [
"COLOR",
"NAME",
"OWNER_ID"
],
"types": [
"STRING",
"STRING",
"BIGINT"
]
},
"primaryKey": {
"columns": [
1,
0
],
"name": "SYS_C008319",
"unique": true
},
"indexes": [],
"size": 0
},
"result": {
"primaryKey": {
"result": "SUCCESS",
"warnings": null,
"message": null
},
"columns": {
"result": "SUCCESS",
"warnings": null,
"message": null
}
}
}
],
"result": "SUCCESS",
"message": null
}
Last updated