Je souhaite créer une table externe dans une base de données Oracle, en récupérant ses données à partir d'un fichier plat sur le serveur. Le format de ce fichier est non trivial. Chaque ligne de ce fichier peut être l'une des différentes mises en page, en fonction du préfixe de la ligne (le préfixe lui-même est toujours une longueur fixe). Par exemple, une ligne commençant par 'TYPE1'
aurait une disposition différente d'une ligne commençant par 'TYPE2'
.Tables externes Oracle: disposition de fichier plat avancée
J'ai lu que les tables externes peuvent tirer parti de toutes les constructions mises à la disposition des fichiers de contrôle de Loader SQL . Cependant, toute la documentation que j'ai lue ne contient que des mises en page de fichiers plats triviales où toutes les lignes partagent une mise en page commune. Un SQL fichier de contrôle Loader pourrait facilement gérer ce scénario en utilisant la clause WHEN
:
WHEN (1:5) = 'TYPE1'
(
field1 POSITION(10:18),
field2 POSITION(26:35)
)
WHEN (1:5) = 'TYPE2'
(
field1 POSITION(23:27),
field2 POSITION(15:19)
)
Comment puis-je exprimer une telle mise en page en utilisant la syntaxe de définition de la table externe d'Oracle?
Merci pour le lien, c'est très utile! :) Cependant, selon cette documentation, la clause LOAD WHEN n'est pas utilisée pour choisir entre plusieurs dispositions de champs: "La clause LOAD WHEN condition_spec est utilisée pour identifier les enregistrements qui doivent être transmis à la base de données. varie: " Avez-vous un exemple de cette clause qui vous permet de choisir entre différentes configurations de champs plutôt que de choisir quels enregistrements seront exportés? –
Vous allez vous retrouver avec plusieurs tables externes. Une table pour les enregistrements TYPE1 et une autre pour les enregistrements TYPE2. Si vous y pensez, une table ne peut pas avoir plusieurs mises en page. – David
Je me demandais si j'allais devoir suivre cette route. Je comprends qu'une table ne peut pas avoir plusieurs mises en page. Cependant, dans mon cas, tous les types de lignes spécifient les mêmes champs, juste dans des positions différentes. Merci pour le conseil! :) Souhaitez-vous modifier votre réponse pour inclure votre dernier commentaire? –