SQL5105N erreur lors de l'exportation d'une table Db2 vers watsonx.data

Une instruction CREATE DATALAKE TABLE peut échouer avec une erreur SQL5105N lors de l'exportation d'une table Datalake de Db2 vers watsonx.data qui utilise un schéma non défini dans watsonx.data.

Symptômes

Lors de l'exportation d'une table Datalake de Db2 vers watsonx.data qui utilise un schéma qui n'est pas défini dans watsonx.data, une erreur se produira et entraînera une incohérence dans les informations sur les métadonnées stockées dans Db2.

Raisons

L'exemple de scénario ci-dessous illustre le problème.

Créer une table qui utilise un schéma qui n'existe pas dans la rubrique watsonx.data:
create datalake table test.t2_ice(id int, age int) stored by iceberg location  'db2remote://ibmlh-dev-iceberg//lh//t2_ice' tblproperties ('iceberg.catalog'='ibmlh-dev')      

Ensuite, une erreur se produit, indiquant que l'objet TEST (le schéma) n'existe pas :
SQL5105N  The statement failed because a Big SQL component encountered an 

error.  Component receiving the error: "DDL".  Component returning the error: 

"HIVE".  Log entry identifier: "[BSL-0-6192310dc]".  Reason: "Invalid Hive 

object for TEST".  SQLSTATE=58040
Vous pouvez tenter de recréer la table avec cette commande :
create datalake table test.t2_ice(id int, age int) stored by iceberg location  'db2remote://ibmlh-dev-iceberg//lh//t2_ice' tblproperties ('iceberg.catalog'='ibmlh-dev')
L'erreur suivante sera renvoyée si la table existe déjà :
SQL0601N  The name of the object to be created is identical to the existing 

name "test.t2_ice" of type "TABLE".  SQLSTATE=42710
Une tentative de suppression de la table avec la commande suivante échouera :
drop datalake table test.t2_ice  
Erreur renvoyée :
SQL0204N  "TEST.T2_ICE" is an undefined name.

Résolution du problème

Pour éviter ce problème, le schéma doit être créé dans watsonx.data avant d'exporter la table Db2 vers watsonx.data.

Pour supprimer une table dont les métadonnées ne correspondent pas à celles stockées sur le site Db2, il est possible d'utiliser l'instruction "drop table" suivante :
drop datalake table if exists test.t2_ice