sql >> Database >  >> RDS >> Oracle

Veld in gegevensbestand overschrijdt maximale lengte - fout

Het foutbericht is omdat de gegevens die uit het gegevensbestand worden ingelezen, groter zijn dan de standaardtekenbuffer van sqlldr van 255 die wordt gebruikt als er geen CHAR en grootte is opgegeven. Merk op dat dit anders is dan de grootte van de kolom waarmee het veld overeenkomt. Als ik bijvoorbeeld een tabelkolom van VARCHAR2(4000) heb, maar niet expliciet een grootte geef in het controlebestand

cola  not null,

en de gegevens in het gegevensbestand groter zijn dan 255 maar minder dan 4000 lang zijn, krijgt u de foutmelding.

Als het controlebestand de buffergrootte echter als volgt aangeeft:

cola char(4000) not null,

alles zal goed zijn alsof het een grotere buffer creëert (hier komt het overeen met de kolomgrootte). Maak er dus een gewoonte van om altijd de kolomgroottes op te nemen. Bespaar uzelf wat gedoe en maak een functie om een ​​standaard controlebestand voor u te genereren... wacht, ik heb de mijne voor u gepost, probeer het eens:https://stackoverflow.com/a/37947714/2543416



  1. SchemaSpy PostgreSQL - WARN - Verbindingsfout

  2. Ruimte berekenen en besparen in PostgreSQL

  3. Manieren waarop ik mijn site kan beschermen met uitzondering van XSS- en Sql-injectie?

  4. Excel VBA verbinden met Oracle DB met 'ODBC'