Rechercher : dans
Par :

SQL Loader

Dernière réponse le 19 jan 2009 à 18:02:22 cleops, le 26 sep 2005 à 17:08:14 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « SQL Loader » dans :
CMOS CHECKSUM ERROR - DEFAULT LOADED VoirAu démarrage votre ordinateur affiche l'une des phrase suivantes : CMOS wrong CMOS MEMORY size WRONG CMOS Checksum Bad CMOS checksum error defaults loaded Warning! CPU has been changed please re-enter cpu settings in the cmos setup and...
Warcraft - Registry error loading key Warcraft III\InstallPath VoirLorsque vous tentez de mettre à jour Warcraft 3, le message suivant apparait et la mise à jour échoue: Registry error loading key 'Warcraft III\InstallPath' Le fichier spécifié est introuvable. Comme le message nous l'indique, la clé du...
Sauvegarde automatique d'une BDD sous SQL EXPRESS 2005 VoirSi vous vous voulez automatiser une sauvegarde d'une base de données sous SQL server express, il existe une solution simple grâce à un fichier .bat. Créez un nouveau fichier texte. Ce fichier doit contenir les informations suivantes: SET...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
PL/SQL - Introduction au langage PL/SQL VoirIntroduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...

1

crabs, le 26 sep 2005 à 21:07:58

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. ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware

Répondre à crabs

2

cleops, le 26 sep 2005 à 21:38:18

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

Répondre à cleops

3

asevere, le 27 sep 2005 à 07:22:25

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 ;)

++ Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

4

cleops, le 27 sep 2005 à 11:35:39

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

Répondre à cleops

5

asevere, le 27 sep 2005 à 16:14:39

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 ;)

++ Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

6

cleops, le 27 sep 2005 à 17:47: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?

Répondre à cleops

12

 puypuy, le 19 jan 2009 à 18:02:22

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

Répondre à puypuy

7

cleops, le 27 sep 2005 à 17:50:18

Petite precision le nom de la table n'a rien avoir avec l'erreur event=aacsta_user_event.

merci d'avance pour votre aide

Répondre à cleops

8

asevere, le 27 sep 2005 à 23:12:24

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..

++
Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

9

cleops, le 28 sep 2005 à 09:10:27

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+

Répondre à cleops

10

asevere, le 28 sep 2005 à 22:48:22

De rien, ça me fais plaisir... c'est tellement rare que j'ai le temps de venir :) Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

11

kati, le 30 nov 2007 à 12:55:36

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.

Répondre à kati