Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2007, 11h53   #1
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 58
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 58
Points : 18
Points : 18
Par défaut SQLLOADER - oracle 10g - ORA-12899 valeur trop grande pour la colonne

Bonjour,

Mon pb:
- La version debase oracle est 10g.
- J'utilise SQLLOADER pour charger des fichiers CSV
- Sur un fichier j'ai le message suivant:
Code :
ORA-12899: valeur trop grande pour la colonne "UTILISATEUR"."PRESTATION"."FONCTIONNEMENT" (réelle : 41, maximum : 30)
Avec:
- FONCTIONNEMENT VARCHAR2(30 byte)
- données dans CSV:
Code :
1
2
3
4
DIVERSIFICATION;FONCTIONNEMENT               ;NUMEROREVISION
---------------;-----------------------------;--------------
               ;                             ;    9999999999
               ;                             ;    9999999999
(j'ai épuré le CSV, d'autres colonnes sont avant et après ces 3 là)
- SELECT vsize(' ') FROM dual;
Code :
1
2
3
4

VSIZE('')
----------
        29

- NLS_CHARACTERSET = AL32UTF8


Je ne comprend pas, car mon champs FONCTIONNEMENT ne contient que des espaces..... ?

Je rencontre ce pb sur d'autres champs vides du même csv

Merci d'avance !
isn44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 17h18   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Essayez d'insérer une partie plus petite de la donnée et vérifiez bien que vous avait le caractère espace avec:

Code :
SELECT dump(<colonne>, 1017) FROM <table>;
AL32UTF8 est un jeu de caractères multibyte: certains caractères utilisent 2, 3 ou 4 octets. Pour stocker 30 caractères (et non 30 octets), il faur déclarer les colonnes VARCHAR2 avec la sémantique caractère:
Code :
1
2
 
VARCHAR2(30 char);
Voir (entre autres) le Concepts Guide.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 17h26   #3
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 58
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 58
Points : 18
Points : 18
le résultat de
SELECT dump(fonctionnement,1017) FROM prestation;
est
NULL pour chaque ligne .

cela veut dire quoi ?
isn44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 17h34   #4
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Cela veut dire que la colonne contient la valeur nulle au sens SQL (NULL).

Essayer de réduire la taille de la colonne dans le fichier pour 1 ligne pour que la chargement se passe sans erreur ou agrandissez la colonne de la table avec la sémantique caractère.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h12.


 
 
 
 
Partenaires

Hébergement Web