Sql*loader Erreur de chargement avec l'option APPEND
Résolu
sabdoul
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
sabdoul Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
sabdoul Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
8 réponses
Bonjour,
Il faut que tu supprimes l'index sur la table avant le sqloader puis que tu le recrées après.
Ou : http://www.dba-oracle.com/t_skip_index_maintenance_sqlldr.htm , mais à la fin de cette opération l'index est dans un status inutilisable donc peu d'interet puisqu'il faut le rebatir après.
cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Il faut que tu supprimes l'index sur la table avant le sqloader puis que tu le recrées après.
Ou : http://www.dba-oracle.com/t_skip_index_maintenance_sqlldr.htm , mais à la fin de cette opération l'index est dans un status inutilisable donc peu d'interet puisqu'il faut le rebatir après.
cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Bonjour Jee pee,Metci de votre.
Avec la suppression et la recréations des indexes que se trouve toute la difficulté car les mises a jour se font régulièrement dans la journée avec une automatisation(a travers un fichier batch que je lance avec le planificateur de tache windows). Donc vous voyez que solution n'est pas adapté.
Serait-il possible d'adopter une autre solution. merci
Avec la suppression et la recréations des indexes que se trouve toute la difficulté car les mises a jour se font régulièrement dans la journée avec une automatisation(a travers un fichier batch que je lance avec le planificateur de tache windows). Donc vous voyez que solution n'est pas adapté.
Serait-il possible d'adopter une autre solution. merci
Rebonjour jee pee,
Cette table je la crée dans ma base de donnée comme une table réel?
Ensuite l'insertion avec le sql: insert into MOUVEMENT select * from MOUVEMENT_TEMP; se fait manuellement dans la BD ou y'a-t-il un moyen pour q'il se fasse sans mon intervention car ses données doivent être insérer régulièrement dans la journée.
Cette table je la crée dans ma base de donnée comme une table réel?
Ensuite l'insertion avec le sql: insert into MOUVEMENT select * from MOUVEMENT_TEMP; se fait manuellement dans la BD ou y'a-t-il un moyen pour q'il se fasse sans mon intervention car ses données doivent être insérer régulièrement dans la journée.
si je comprend bien j'ajoute la ligne sqlplus system/manager@ORACLE_SID @recopie.sql au fichier de control?
exemple avec mon cas
LOAD DATA
APPEND
INTO TABLE MOUVEMENT
FIELDS TERMINATED BY '\t'
TRAILING NULLCOLS
(CODE_ETABL char(10),
CODE_DEPOT char(35),
CODE_PRODUIT char(35),
........
..........
)
sqlplus system/manager@ORACLE_SID @recopie.sql
dans le cas contraire comment se fait la syntaxe c'est à dire où je doit la placer. merci
exemple avec mon cas
LOAD DATA
APPEND
INTO TABLE MOUVEMENT
FIELDS TERMINATED BY '\t'
TRAILING NULLCOLS
(CODE_ETABL char(10),
CODE_DEPOT char(35),
CODE_PRODUIT char(35),
........
..........
)
sqlplus system/manager@ORACLE_SID @recopie.sql
dans le cas contraire comment se fait la syntaxe c'est à dire où je doit la placer. merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,jee pee j'ai avancé un peu je pense que la ligne sqlplus system/manager@ORACLE_SID @recopie.sql doit être dans la commande c'est à dire dans mon fichier bat de sorte qu'il soit lancer dans l'invite de commande comme le sqlldr cependant où doit se trouver le fichier recopie.sql?
Merci
Merci
Oui c'est bien dans le fichier batch que tu lances avec le planificateur qu'il faut rajouter la ligne sqlplus
Ou mettre le .sql : soit il est dans le répertoire de travail de la tache qui exécute le batch, soit tu mets son nom complet style c:\monsql\expl\recopie.sql
Ou mettre le .sql : soit il est dans le répertoire de travail de la tache qui exécute le batch, soit tu mets son nom complet style c:\monsql\expl\recopie.sql