Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2007, 20h20   #1
Invité de passage
 
Inscription : février 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 2
Points : 0
Points : 0
Par défaut sqlloader : annuler un chargement

Bonjour,

Existe t'il un moyen d'annuler le chargement des données fait avec sql loader si des données du fichier sont rejetées ? En d'autres termes, peut-on faire un rollback ou un undo quand il y a du bad ?

Merci par avance de votre aide.
lerenard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 10h12   #2
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Bonjour,

il me semble que lors de l'appel à sql loader il existe un paramètre 'errors' qui te permet de spécifier le nombre d'erreurs tolérées.
Cherche de ce côté là (je ne sais pas si ce paramètre fonctionne pour toute les versions de sqlldr)

voili, voilou
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 12h01   #3
Invité de passage
 
Inscription : février 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 2
Points : 0
Points : 0
Par défaut sqlloader : annuler un chargement

Merci kalyparker !
Le paramètre errors sert à dire combien de lignes en erreur sont acceptées dans le fichier bad (enregistrements en rejet) mais il n'annule pas le chargement des données valides. Or, moi, ce que je voudrais, c'est pouvoir annuler le chargement des données valides déjà intégrées si des enregistrements sont rejetés.
lerenard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 13h19   #4
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Citation:
il n'annule pas le chargement des données valides
Bon, ben tant pis.
Je ne crois pas que c'est possible de faire ça directement avec sql loader.

A mon avis, le plus simple c'est d'utiliser une table temporaire de chargement.
Tu teste ensuite si un fichier .bad à été créé, et si non et bien tu bascule les données chargé dans la table temporaire vers les bonnes tables.
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 13h54   #5
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Par défaut table externe

Bonjour,

La création de table externe te permet de controler le nombre d'enregistrements rejetés et aprés tu peux remplir tes vrais tables

Le mécanisme étant proche de celui utilisé par l'utilitaire Sql*Loader,
l'écriture éventuelle d'un fichier log et d'un fichier de rejet requiert également
le droit d'écriture (WRITE) sur un répertoire Oracle.

Voici l'exemple suivant
Soit le fichier plat test_table_externe.txt suivant :

10,Emile,DUBOUDIN, Charcutier
20,Jocelyne,POTAUFEU,Epicière
30,Harry,COVER,Maraîcher
40,Hans,BURGER,Restaurateur

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
 
CREATE TABLE employes_ext
(
	numero	NUMBER(7),
	nom	VARCHAR2(30),
	prenom	VARCHAR2(20),
	job	VARCHAR2(20)
)
	ORGANIZATION EXTERNAL
	(
	  TYPE ORACLE_LOADER
	  DEFAULT DIRECTORY	nom_directory_read
	  ACCESS PARAMETERS
	  (
		records delimited BY newline
		badfile	 nom_directory_write:'test_table_externe.bad'
		logfile nom_directory_write:'test_table_externe.log'
		FIELDS terminated BY ','
		missing FIELD VALUES are NULL
		( numero, nom, prenom, job )
	  ) 
	  LOCATION ('test_table_externe.txt')
	)
	PARALLEL
	REJECT LIMIT 0 ;
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h12.


 
 
 
 
Partenaires

Hébergement Web