Bonjour,
Je charge une table avec SQL LOADER et je voudrais que lors du chargement, une séquence soit incrémentée pour stocker le numéro de ligne. Est-il possible de le faire, si oui comment ?
Merci d'avance.
Version imprimable
Bonjour,
Je charge une table avec SQL LOADER et je voudrais que lors du chargement, une séquence soit incrémentée pour stocker le numéro de ligne. Est-il possible de le faire, si oui comment ?
Merci d'avance.
Bonjour,
c'est possible : va faire un tour ici :
http://www.developpez.net/forums/sho...d.php?t=263951
et à l'avenir :recherch:
J'ai trouvé la réponse dans le donné. Merci.Citation:
Envoyé par kalyparker
Dans l'utilisation de la recherche rapide, je ne trouve pas toujours satisfaction.
Cdlt.
No problem, on en est tous au même point...Citation:
Dans l'utilisation de la recherche rapide, je ne trouve pas toujours satisfaction.
Allez encore un problème de résolu :mouarf:
Bonjour,Citation:
Envoyé par kalyparker
J'ai parcouru tous les liens donnés et j'ai fait un test, mais malheureuse ça ne marche pas. La colonne de la table qui doit recevoir la séquence reste vide.
Après insertion, ma 1ère colonne est vide. Pourquoi ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Séquence: CREATE SEQUENCE sq_matl INCREMENT BY 1 START WITH 1 CACHE 20 / Table: CREATE TABLE matl ( numligne NUMBER(5) , liste VARCHAR2(100) , groupement VARCHAR2(100) , piece VARCHAR2(10) ) / Fichier de contrôle: LOAD DATA APPEND 'matl.csv' INTO TABLE matl FIELDS TERMINATED BY ';' ( numligne "sq_matl.nextval" , liste CHAR(100) , groupement CHAR(100) , piece CHAR(10) ) Les données: ;liste1;11 - SUPERSTRUCTURE;8200410131 ;liste2;11 - SUPERSTRUCTURE;8200392254 ;liste3;11 - SUPERSTRUCTURE;8200392256 ;liste4;63 - SIEGES;8200374313 ;liste5;11 - SUPERSTRUCTURE;8200374314 ;liste6;11 - SUPERSTRUCTURE;R100038002
Merci
Bonjour,
Attention, dans ce fichier de controle il y a plusieurs erreurs :Code:
1
2
3
4
5
6
7
8
9
10 LOAD DATA APPEND 'matl.csv' INTO TABLE matl FIELDS TERMINATED BY ';' ( numligne "sq_matl.nextval" , liste CHAR(100) , groupement CHAR(100) , piece CHAR(10) )
si tu précise fields terminated by alors tu n'as pas à définir la longueur de tes champs.
d'autre part le nom de ton fichier source est mal placé et il manque infile.
En bref, si tu veux que cela fonctionne voici ce que tu dois mettre :
VoilouCode:
1
2
3
4
5
6
7
8
9
10
11
12 LOAD DATA INFILE 'matl.csv' APPEND INTO TABLE matl FIELDS TERMINATED BY ';' ( numligne "sq_matl.nextval" , liste , groupement , piece )
Merci kalyparker,
J'ai corrigé le fichier de contrôle et testé à nouveau mais hélas ma 1ère colonne qui doit contenir la séquence est vide tandis que les autres sont bien remplies.
D'où peut provenir l'erreur ?
J'ai fait le test, et chez moi ça marche...
J'ai la même config que toi, alors :koi:
Essaye de dropper la sequence et de la recréer. Puis recharge ta table.
Salut kalyparker,
J'ai refait le test et ça marche. Le problème venait du fait que je chargeais la table en mode direct (donc en bloc) au lieu de charger en mode conventionnel c-a-d ligne par ligne. En mode direct, la séquence ne peut pas être incrémentée.
Par ailleurs j'ai une autre problématique à régler: comment à travers sqlldr charger une colonne avec une constante, par exemple je veux mettre une constante dans ma colonne "liste" ?
Merci.
Salut Ito,
sur ce site :
http://orafaq.com/faqloadr.htm#MODIFY
on peut trouver quelques infos sur les modifications des données.
Cela dit, pour résoudre ton problème sur ce site il disent que l'on peux utiliser le mot CONSTANT.
J'ai tester, mais ça marche pas. Essaye quand même on sait jamais. ;)
Sinon je te propose ça :
pas très beau, mais efficace !!Code:
1
2
3
4
5
6
7
8
9
10
11
12 LOAD DATA INFILE 'test.txt' APPEND INTO TABLE matl FIELDS TERMINATED BY ';' ( numligne "sq_matl.nextval", liste "decode(:liste,'','','TEST')", groupement, piece )
@+
kalyparker,
J'ai testé avec CONSTANT, effectivement ça ne marche.
J'ai utilisé le DECODE et ça marche.
Once again, thanks a lot for all.