Qu'est-ce que le format de fichier BAD ?
Un fichier .bad est un Oracle SQL*Loader Bad File - un fichier de sortie en texte brut que SQL*Loader écrit lorsqu'il rejette des lignes lors d'un chargement massif de données dans une base de données Oracle.
Le fichier contient une copie conforme de chaque ligne qui n'a pas pu être chargée, dans le même format que l'entrée d'origine (CSV, largeur fixe ou flux). Comme le contenu reflète exactement la source, les lignes corrigées peuvent être réinjectées directement dans sqlldr en utilisant le même fichier de contrôle .ctl sans reformatage - ce qui fait du fichier .bad un artefact de « réparation et nouvel essai » plutôt qu'un simple journal d'erreurs.
Les enregistrements se retrouvent dans le fichier .bad pour trois raisons :
- La ligne viole une contrainte Oracle (clé unique en double, violation de
NOT NULL, etc.). - SQL*Loader ne peut pas analyser les limites des champs dans une ligne délimitée mal formée.
- Une valeur de champ ne peut pas être convertie dans le type de données de la colonne cible.
Le fichier .bad est distinct du fichier de rejet .dsc (discard file). Les rejets sont des lignes intentionnellement ignorées par une clause WHEN dans le fichier de contrôle - elles n'ont jamais été tentées. Les enregistrements « bad » ont été tentés et ont échoué.
Si chaque ligne d'entrée est chargée avec succès, le fichier .bad n'est pas créé du tout. Le nom par défaut dérive du fichier de données d'entrée (par exemple, data.csv → data.bad), sauf s'il est remplacé par BADFILE= dans le fichier de contrôle ou BAD= sur la ligne de commande.
SQL*Loader fait partie d'Oracle Database depuis la version 6 (1988) et reste un utilitaire central dans les versions actuelles d'Oracle Database 23ai.
Sécurité et sûreté
RISQUE : LOWFichier de données en texte brut ; ne peut pas s'exécuter. Peut contenir des données professionnelles sensibles (PII, dossiers financiers) provenant d'une importation ayant échoué - à traiter en conséquence, restreindre l'accès au système de fichiers aux administrateurs de bases de données et aux opérateurs ETL autorisés.
Détails du format
en bref- Fichier de message erroné Microsoft Exchange Server - Le transport SMTP d'Exchange stocke les messages non distribuables ou mal formés dans des fichiers .BAD dans le répertoire de file d'attente Exchange.
- Marqueur général de « données erronées » (diverses applications) - Certains outils ETL et programmes hérités utilisent .bad comme extension générique pour les fichiers de sortie d'erreur ou de rejet.
Programmes qui ouvrent les fichiers BAD
Détails techniques
spécifications approfondies| Type de format | Miroir de lignes rejetées en texte brut (même structure que le fichier de données d'entrée SQL*Loader) |
| Encodage | Correspond au fichier de données d'entrée - ASCII, UTF-8 ou jeu de caractères Oracle NLS tel que configuré dans le fichier de contrôle |
| Contenu | Copie conforme de chaque ligne rejetée lors de l'exécution de SQL*Loader, dans le format d'entrée d'origine |
| Raisons du rejet | Violation de contrainte Oracle (PK/UK/NOT NULL) ; délimiteurs de champ impossibles à analyser ; échec de conversion de type de données |
| Gestion des données LOB | Le contenu LOB provenant de sources LOBFILE ou SDF n'est PAS écrit dans le fichier .bad lorsque sa ligne est rejetée |
| Nom de fichier par défaut | <nom_de_base_du_fichier_entrée>.bad (ex: data.csv → data.bad) |
| Surcharge du nom de fichier | BADFILE= dans le fichier de contrôle .ctl, ou BAD= sur la ligne de commande sqlldr |
| Création du fichier | Créé uniquement lorsqu'au moins une ligne est rejetée ; absent lors des chargements totalement réussis |
| Distinction avec .dsc | .dsc (discard) contient les lignes ignorées par une clause WHEN - sauts intentionnels, pas des erreurs ; .bad contient les lignes dont l'insertion a échoué |
| Flux de réutilisation | Le fichier .bad corrigé peut être rechargé directement avec le même fichier de contrôle .ctl sans reformatage |
| Plateformes supportées | Toute plateforme Oracle Database : Linux, Unix, Windows, Solaris, AIX |
| Publié | Oracle 7 era, circa 1992 (SQL*Loader has existed since Oracle 6, 1988) |
| Dernière version | N/A - format is defined by the input data format; no versioning |
| Spécification | docs.oracle.com |
Conversions BAD
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers BAD.