Hvad er BAD-filformatet?
En .bad-fil er en Oracle SQL*Loader Bad-fil - en outputfil i almindeligt tekstformat, som SQL*Loader skriver, når den afviser rækker under en massedata-indlæsning i en Oracle-database.
Filen indeholder en ordret kopi af hver række, der ikke kunne indlæses, i samme format som det oprindelige input (CSV, fast bredde eller stream). Da indholdet afspejler kilden nøjagtigt, kan rettede rækker føres direkte tilbage til sqlldr ved hjælp af den samme .ctl kontrolfil uden omformatering - hvilket gør .bad-filen til en reparations- og genforsøgs-artefakt snarere end blot en fejllog.
Poster ender i .bad-filen af tre årsager:
- Rækken overtræder en Oracle-begrænsning (dubleret unik nøgle,
NOT NULL-overtrædelse osv.). - SQL*Loader kan ikke fortolke feltgrænser i en fejlbehæftet afgrænset række.
- En feltværdi kan ikke konverteres til målkolonnens datatype.
.bad-filen er forskellig fra .dsc discard-filen. Discards er rækker, der bevidst springes over af en WHEN-sætning i kontrolfilen - de blev aldrig forsøgt indlæst. Bad-poster blev forsøgt indlæst og fejlede.
Hvis hver inputrække indlæses korrekt, oprettes .bad-filen slet ikke. Standardnavnet stammer fra inputdatafilen (f.eks. data.csv → data.bad), medmindre det tilsidesættes med BADFILE= i kontrolfilen eller BAD= på kommandolinjen.
SQL*Loader har været en del af Oracle Database siden version 6 (1988) og forbliver et kerneværktøj i de nuværende Oracle Database 23ai-udgivelser.
Sikkerhed og tryghed
RISIKO: LOWDatafil i almindelig tekst; kan ikke eksekveres. Kan indeholde følsomme forretningsdata (PII, finansielle poster) fra en mislykket import - behandl derefter, begræns filsystemadgang til autoriserede DBA'er og ETL-operatører.
Formatdetaljer
kort fortalt- Microsoft Exchange Server bad-message fil - Exchange SMTP-transport gemmer uleverbare eller fejlbehæftede meddelelser i .BAD-filer i Exchange-kø-biblioteket.
- Generel «bad data»-markør (forskellige applikationer) - Nogle ETL-værktøjer og ældre programmer bruger .bad som en generisk filendelse for fejl-/afvisnings-outputfiler.
Programmer der åbner BAD-filer
Tekniske detaljer
dyb specifikation| Format-type | Spejling af afviste rækker i almindelig tekst (samme struktur som SQL*Loader-inputdatafilen) |
| Kodning | Matcher inputdatafilen - ASCII, UTF-8 eller Oracle NLS-tegnsæt som konfigureret i kontrolfilen |
| Indhold | Ordret kopi af hver række afvist under SQL*Loader-kørslen, i det oprindelige inputformat |
| Afvisningsårsager | Oracle-begrænsningsbrud (PK/UK/NOT NULL); ufortolkelige feltadskillere; fejl i datatypekonvertering |
| Håndtering af LOB-data | LOB-indhold fra LOBFILE- eller SDF-kilder skrives IKKE til .bad-filen, når dens række afvises |
| Standard filnavn | <input_datafil_basisnavn>.bad (f.eks. data.csv → data.bad) |
| Tilsidesættelse af filnavn | BADFILE= i .ctl-kontrolfilen, eller BAD= på sqlldr-kommandolinjen |
| Filoprettelse | Oprettes kun, når mindst én række afvises; fraværende ved fuldstændig vellykkede indlæsninger |
| Forskel fra .dsc | .dsc (discard) indeholder rækker, der er sprunget over af en WHEN-sætning - tilsigtede udeladelser, ikke fejl; .bad indeholder rækker, der fejlede ved indsættelse |
| Genanvendelses-workflow | Rettet .bad-fil kan genindlæses direkte med den samme .ctl-kontrolfil uden omformatering |
| Platform-understøttelse | Enhver Oracle Database-platform: Linux, Unix, Windows, Solaris, AIX |
| Udgivet | Oracle 7 era, circa 1992 (SQL*Loader has existed since Oracle 6, 1988) |
| Seneste version | N/A - format is defined by the input data format; no versioning |
| Specifikation | docs.oracle.com |
BAD-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om BAD-filer.