Posez votre question Signaler

SQL Loader

cleops 24Messages postés 6 septembre 2005Date d'inscription - Dernière réponse le 19 janv. 2009 à 18:02
Bonjour,
je voudrais inserer un fichier dans une table dont les champs sont de ce type:
265276;26/09/05;1147;0665804907;1
265277;26/09/05;1147;0665804910;1

J'ai ecrit une requete de ce type:
LOAD DATA INFILE 'fichier.log'
APPEND INTO TABLE event
FIELDS TERMINATED BY';'OPTIONALLY ENCLOSED BY'"'
(ID,DATE date,EVENT_ID,LOGIN,C);

Quand je fais appel a cette requete avec un script, cette erreur apparait: Illegal combination of non-alphanumeric characters

Et je ne comprends pas pourquoi. Quelqu'un a une idee?
Merci d'avance pour votre aide
Lire la suite 

SQL Loader »

12 réponses
Réponse
+2
moins plus
J'ai modifie mon script pour qu'il n'ait plus l'erreur de commit.
LOAD DATA INFILE 'fichier.log'
APPEND INTO TABLE event
FIELDS TERMINATED BY ';'
(ID position (*) integer,DATE position (*) date,EVENT_ID p
osition (*) integer,LOGIN_NAME position (*) varchar,CANAL position (*) varchar)

Donc je n'ai plus de commit mais il rejete toutes les lignes de mon fichier au lieu de les ecrire dans ma table
Record 1: Rejected - Error on table AACSTA_USER_EVENT, column CANAL.
Column not found before end of logical record (use TRAILING NULLCOLS)
Record 2: Rejected - Error on table AACSTA_USER_EVENT, column CANAL.
Column not found before end of logical record (use TRAILING NULLCOLS)

Et c'est comme ca pour chaque ligne de mon fichier. Quelqu'un sait pourquoi il n'accepte pas la derniere colonne?
puypuy - 19 janv. 2009 à 18:02
le monsieur il te dit (use TRAILING NULLCOLS)
donc il faut ecrire

LOAD DATA INFILE 'fichier.log'
APPEND INTO TABLE event
FIELDS TERMINATED BY ';' TRAILING NULLCOLS
(ID position (*) integer,DATE position (*) date,EVENT_ID p
osition (*) integer,LOGIN_NAME position (*) varchar,CANAL position (*) varchar)

ce qui te permettra d'eviter le colonne nulles
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Y aurai pas un problème avec les dates qui ne semblent pas être au format
mysql : YYYY-MM-DD ?
Sinon, files la structure complète de la table event.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Tout d'abord merci de m'avoir repondu.
En fait j'utilise une base de données oracle.
Voici la structure de la table event
- id: number
- date: date
- event_id: number
- login: varchar2
- C: number

Merci d'avance de ton aide
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Je ne travail pas des masses avec oracle, mais les champs date et login n'étant pas des entier ou booléens, tu devrais les quoter dans ton fichier text ((sauf si c'est un genre de bcp, et enccore, suis pas sure.

265276;'26/09/05';1147;'0665804907';1
Autre chose, login -> varchar 2, le 2 c'est une faute de frappe ? parce que 0665804907, ça fait 10 caractéres ;)

++
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

J'ai remodifie mon fichier d'entree car il y avait des caracteres et des espaces en trop.

Dans mon script login est bien un varchar2(50) car des fois il y a plus de 10 caracteres

Maintenant j'ai ces erreurs qui apparaissent lorsque j'execute mon script. Ca veut dire quoi?
Commit point reached - logical record count 50
Commit point reached - logical record count 100

Merci d'avance pour ton aide
asevere - 27 sept. 2005 à 16:14
Ca doit vouloir dire que par défaut, Oracle commit tout les 50 enregistrement, ça ne ressemble pas a une erruer, plus a une information ;)

++
Ajouter un commentaire
Réponse
+0
moins plus
Petite precision le nom de la table n'a rien avoir avec l'erreur event=aacsta_user_event.

merci d'avance pour votre aide
Ajouter un commentaire
Réponse
+0
moins plus
Heu... le commit, n'est pas une erreur tu a regardé l'état de ta table avant de refaire ton script ?

COMMIT -> Accepter les précédentes requêtes
ROLLBACK -> Annuler les précédentes requêtes

Donc:
- Commit point reached - logical record count 50
50 lignes insérées, Oracle commit automatiquement

- Commit point reached - logical record count 100
100 lignes insérées (50+50), Oracle commit automatiquement

Si ton script ne t'a dit que ça, c'est qu'il fonctionnait trés bien ;)

De plus, ta derniere colonne, c'est C ou CANAL ?

Si tu nous donnais la structure exacte de ta table (retourner par une procstock ou autre moyen disponible avec oracle ) on pourrait sans doute mieux comprendre le probléme..

++
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Tu avais raison le commit ca veut dire que j'avais reussi l'insertion des fichiers. Je n'avais pas fait attention pour moi ct une erreur. Du coup j'ai passe une demi journée en plus a chercher pour rien.

Pour info il ne faut pas mettre le type des variables:
LOAD DATA INFILE 'fichier.log'
APPEND INTO TABLE event
FIELDS TERMINATED BY ';'
(ID position (*),DATE position (*),EVENT_ID position (*),L
OGIN_NAME position (*),CANAL position (*))

Merci beaucoup pour ton aide asevere. Sans toi j'aurais encore tourner en rond :)
A+
asevere - 28 sept. 2005 à 22:48
De rien, ça me fais plaisir... c'est tellement rare que j'ai le temps de venir :)
Ajouter un commentaire
Réponse
+0
moins plus
bonjour à tous ,

moi aussi je travaille sur le meme sujet (structurer des données à partir d'un fichier texte vers une table ) avec des recherches et des demandes par si par la ==> j'ai pu savoir qu'il faudré travailler avec sql loader mais je ntravaille pas sur BD oracle mais une BD sql server 2005

ce ke je voudré savoir cé k'une fois ke jé ecrit le script comme vous l'avez fait , comment l'excécuter pour kil envoi les données a partir du fichier texte vers la table que jé crée dans une nouvelle BD dans sql server 2005 ?

et merci d'avance.
Ajouter un commentaire
Ce document intitulé « SQL Loader » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?