SQL Loader

Fermé
cleops Messages postés 24 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 19 avril 2006 - 26 sept. 2005 à 17:08
 puypuy - 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
A voir également:

9 réponses

cleops Messages postés 24 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 19 avril 2006 2
27 sept. 2005 à 17:47
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?
2
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
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
26 sept. 2005 à 21:07
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.
0
cleops Messages postés 24 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 19 avril 2006 2
26 sept. 2005 à 21:38
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
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
27 sept. 2005 à 07:22
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 ;)

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cleops Messages postés 24 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 19 avril 2006 2
27 sept. 2005 à 11:35
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
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
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 ;)

++
0
cleops Messages postés 24 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 19 avril 2006 2
27 sept. 2005 à 17:50
Petite precision le nom de la table n'a rien avoir avec l'erreur event=aacsta_user_event.

merci d'avance pour votre aide
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
27 sept. 2005 à 23:12
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..

++
0
cleops Messages postés 24 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 19 avril 2006 2
28 sept. 2005 à 09:10
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+
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
28 sept. 2005 à 22:48
De rien, ça me fais plaisir... c'est tellement rare que j'ai le temps de venir :)
0
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.
0