Vad är filformatet BAD?
En .bad-fil är en Oracle SQL*Loader Bad File - en utdatafil i klartext som SQL*Loader skriver när den avvisar rader under en massdataladdning till en Oracle-databas.
Filen innehåller en ordagrann kopia av varje rad som inte kunde laddas, i samma format som den ursprungliga indatan (CSV, fast bredd eller ström). Eftersom innehållet speglar källan exakt kan korrigerade rader matas direkt tillbaka till sqlldr med samma .ctl-kontrollfil utan omformatering - vilket gör .bad-filen till en artefakt för reparation och omförsök snarare än bara en fellogg.
Poster hamnar i .bad-filen av tre anledningar:
- Raden bryter mot en Oracle-begränsning (duplicerad unik nyckel,
NOT NULL-brott, etc.). - SQL*Loader kan inte tolka fältgränser i en felaktigt utformad avgränsad rad.
- Ett fältvärde kan inte konverteras till målkolumnens datatyp.
.bad-filen skiljer sig från .dsc-discardfilen. Discards är rader som avsiktligt hoppats över av en WHEN-sats i kontrollfilen - de försökte aldrig laddas. Bad-poster försöktes laddas men misslyckades.
Om varje indatarad laddas framgångsrikt skapas inte .bad-filen alls. Standardnamnet härleds från indatafilen (t.ex. data.csv → data.bad) om det inte åsidosätts med BADFILE= i kontrollfilen eller BAD= på kommandoraden.
SQL*Loader har varit en del av Oracle Database sedan version 6 (1988) och förblir ett kärnverktyg i nuvarande Oracle Database 23ai-utgåvor.
Säkerhet & trygghet
RISK: LOWDatafil i klartext; kan inte köras. Kan innehålla känsliga affärsdata (PII, finansiella poster) från en misslyckad import - hantera därefter, begränsa filsystemåtkomst till auktoriserade DBA:er och ETL-operatörer.
Formatdetaljer
i ett nötskal- Microsoft Exchange Server bad-message file - Exchange SMTP-transport lagrar olevererbara eller felaktiga meddelanden i .BAD-filer i Exchange-kökatalogen.
- Allmän «bad data»-markör (olika applikationer) - Vissa ETL-verktyg och äldre program använder .bad som en generisk filändelse för fel- eller avvisningsfiler.
Program som öppnar BAD-filer
Tekniska detaljer
djup specifikation| Formattyp | Spegling av avvisade rader i klartext (samma struktur som SQL*Loader-indatafilen) |
| Kodning | Matchar indatafilen - ASCII, UTF-8 eller Oracle NLS-teckenuppsättning enligt konfiguration i kontrollfilen |
| Innehåll | Ordagrann kopia av varje rad som avvisades under SQL*Loader-körningen, i ursprungligt indataformat |
| Orsaker till avvisning | Brott mot Oracle-begränsning (PK/UK/NOT NULL); otydbara fältavgränsare; fel vid konvertering av datatyp |
| Hantering av LOB-data | LOB-innehåll från LOBFILE- eller SDF-källor skrivs INTE till .bad-filen när dess rad avvisas |
| Standardfilnamn | <indatafilens_basnamn>.bad (t.ex. data.csv → data.bad) |
| Åsidosättande av filnamn | BADFILE= i .ctl-kontrollfilen, eller BAD= på sqlldr-kommandoraden |
| Filskapande | Skapas endast när minst en rad avvisas; saknas vid helt lyckade laddningar |
| Skillnad från .dsc | .dsc (discard) innehåller rader som hoppats över av en WHEN-sats - avsiktliga hopp, inte fel; .bad innehåller rader som misslyckades vid infogning |
| Arbetsflöde för återanvändning | Korrigerad .bad-fil kan laddas om direkt med samma .ctl-kontrollfil utan omformatering |
| Plattformssupport | Alla Oracle Database-plattformar: Linux, Unix, Windows, Solaris, AIX |
| Släppt | Oracle 7 era, circa 1992 (SQL*Loader has existed since Oracle 6, 1988) |
| Senaste version | N/A - format is defined by the input data format; no versioning |
| Specifikation | docs.oracle.com |
BAD-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om BAD-filer.