Wat is het BAD-bestandsformaat?
Een .bad-bestand is een Oracle SQL*Loader Bad File - een tekstbestand dat SQL*Loader schrijft wanneer het rijen weigert tijdens het laden van bulkgegevens in een Oracle-database.
Het bestand bevat een letterlijke kopie van elke rij die niet kon worden geladen, in hetzelfde formaat als de oorspronkelijke invoer (CSV, vaste breedte of stream). Omdat de inhoud de bron exact weerspiegelt, kunnen gecorrigeerde rijen direct weer in sqlldr worden ingevoerd met hetzelfde .ctl-besturingsbestand zonder herformattering - waardoor het .bad-bestand eerder een reparatie-instrument is dan louter een foutenlogboek.
Records komen om drie redenen in het .bad-bestand terecht:
- De rij schendt een Oracle-beperking (dubbele unieke sleutel,
NOT NULL-schending, enz.). - SQL*Loader kan veldbegrenzingen niet parsen in een onjuist geformatteerde rij.
- Een veldwaarde kan niet worden geconverteerd naar het datatype van de doelkolom.
Het .bad-bestand is anders dan het .dsc-discardbestand. Discards zijn rijen die opzettelijk zijn overgeslagen door een WHEN-clausule in het besturingsbestand - er is nooit geprobeerd deze te laden. Bad-records zijn wel geprobeerd, maar mislukt.
Als elke invoerrij succesvol wordt geladen, wordt het .bad-bestand helemaal niet aangemaakt. De standaardnaam is afgeleid van het invoergegevensbestand (bijv. data.csv → data.bad), tenzij dit wordt overschreven met BADFILE= in het besturingsbestand of BAD= op de opdrachtregel.
SQL*Loader maakt deel uit van Oracle Database sinds versie 6 (1988) en blijft een kernhulpprogramma in de huidige Oracle Database 23ai-releases.
Beveiliging & veiligheid
RISICO: LOWTekstbestand; kan niet worden uitgevoerd. Kan gevoelige bedrijfsgegevens bevatten (PII, financiële gegevens) van een mislukte import - ga hier dienovereenkomstig mee om, beperk de toegang tot het bestandssysteem tot geautoriseerde DBA's en ETL-operators.
Formaatdetails
in een notendop- Microsoft Exchange Server bad-message bestand - Exchange SMTP-transport slaat onbestelbare of onjuist geformatteerde berichten op in .BAD-bestanden in de Exchange-wachtrijmap.
- Algemene markering voor „slechte gegevens” (diverse toepassingen) - Sommige ETL-tools en legacy-programma's gebruiken .bad als een generieke extensie voor fout- of weigeringsbestanden.
Programma's die BAD-bestanden openen
Technische details
diepe specificaties| Formaattype | Tekstbestand met geweigerde rijen (dezelfde structuur als het SQL*Loader-invoerbestand) |
| Codering | Komt overeen met het invoerbestand - ASCII, UTF-8 of Oracle NLS-tekenset zoals geconfigureerd in het besturingsbestand |
| Inhoud | Letterlijke kopie van elke rij die is geweigerd tijdens de SQL*Loader-sessie, in het originele invoerformaat |
| Redenen voor weigering | Schending van Oracle-beperkingen (PK/UK/NOT NULL); onleesbare veldscheidingstekens; fout bij conversie van datatype |
| LOB-gegevensverwerking | LOB-inhoud van LOBFILE- of SDF-bronnen wordt NIET naar het .bad-bestand geschreven wanneer de bijbehorende rij wordt geweigerd |
| Standaard bestandsnaam | <basisnaam_invoerbestand>.bad (bijv. data.csv → data.bad) |
| Overschrijven bestandsnaam | BADFILE= in het .ctl-besturingsbestand, of BAD= op de sqlldr-opdrachtregel |
| Aanmaken van bestand | Alleen aangemaakt wanneer er ten minste één rij wordt geweigerd; afwezig bij volledig succesvolle laadsessies |
| Onderscheid van .dsc | .dsc (discard) bevat rijen die zijn overgeslagen door een WHEN-clausule - opzettelijke overslagen, geen fouten; .bad bevat rijen waarbij het invoegen is mislukt |
| Hergebruik-workflow | Gecorrigeerd .bad-bestand kan direct opnieuw worden geladen met hetzelfde .ctl-besturingsbestand zonder herformattering |
| Platformondersteuning | Elk Oracle Database-platform: Linux, Unix, Windows, Solaris, AIX |
| Uitgebracht | Oracle 7 era, circa 1992 (SQL*Loader has existed since Oracle 6, 1988) |
| Laatste versie | N/A - format is defined by the input data format; no versioning |
| Specificatie | docs.oracle.com |
BAD conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over BAD-bestanden.