Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Administration
Administration Forum d'entraide sur les fonctionnalités d'administration de SAS : installation, portal, serveurs
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 16/12/2010, 17h10   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 3
Points : 1
Points : 1
Par défaut Alimenter Oracle avec des tables SAS

Ci-joint 3 méthodes pour exécuter un chargement de données dans Oracle dont je retrouve amplement de documentation. Le problème auquel j'aimerais trouver une solution est le suivant : la source de données est une BD MsAccess dont une des variables est un No_séquentiel automatique. Ce No_sequentiel doit être modifier avant ou au moment de l'insertion dans Oracle pour en pas être en conflit avec ce qui existe déjà (No_sequence fait parti de la clé). On ne peut envisager qque chose du genre max(no_sequence)+1, je dois aller cherche la valeur du "next val" pour no_sequence dans une table de contrôle et mettre à jour cette même table de contrôle à la fin du chargement. Si ça s'exprime assez bien en français, y a-t-il qqu'un qui aurait qques idées de codage en language SAS? Reconnaissance et remerciements.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/* Alimentation de PSentinelle sur Oracle en utilisant l'énoncé Libname */
 
Libname Puit Oracle User=&username 
                    PW=&password 
                    Path="@&database"
                    INSERTBUFF=32767 
                    DBCommit=0;
 
Proc SQL;
	INSERT INTO Puit.PROJET_ENGIN_MOBILE (BulkLoad=yes
				      Bl_BadFile=Work.Er_Projet
				      Bl_DataFile=Work.Projet
				      Bl_Delete_DataFile=Yes
				      Bl_Direct_Path=Yes
				      Bl_DiscardFile=Work.Rej_Projet
				      Bl_Load_Method=Append
				      Bl_Preserve_Blanks=Yes
				      bl_return_warnings_as_errors=yes)
     (SELECT * FROM Work.Projet); 
Quit;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/* Alimentation de PSentinelle sur Oracle en utilisant le "Pass-Throught facility" */
 
Proc SQL;
Connect TO Oracle AS Puit
 (User=&username PW=&password Path="@&database" Connection=Global);
INSERT INTO Puit.PROJET_ENGIN_MOBILE (BulkLoad=yes
				      Bl_BadFile=Work.Er_Projet
				      Bl_DataFile=Work.Projet
				      Bl_Delete_DataFile=Yes
				      Bl_Direct_Path=Yes
				      Bl_DiscardFile=Work.Rej_Projet
				      Bl_Load_Method=Append
				      Bl_Preserve_Blanks=Yes
				      bl_return_warnings_as_errors=yes)
     (SELECT * FROM Work.Projet);
 
INSERT INTO Puit.TRAIT_MOBILE (BulkLoad=yes
				      Bl_BadFile=Work.Er_Trait
				      Bl_DataFile=Work.Trait
				      Bl_Delete_DataFile=Yes
				      Bl_Direct_Path=Yes
				      Bl_DiscardFile=Work.Rej_Trait
				      Bl_Load_Method=Append
				      Bl_Preserve_Blanks=Yes
				      bl_return_warnings_as_errors=yes)
     (SELECT * FROM Work.Trait);
 
Disconnect FROM Puit;
Quit;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Proc DBLoad
     DBMS=Oracle
     DATA=Work.Projet
     Append;
User=&username;
PassWord=&password;
Path="@&database";
TABLE=Projet_Engin_Mobile;
AccDesc='Projet_Engin_Mobile';
Commit=1000;  /* Indique après combien d'occurrences une sauvegarde sera effectuée */
LIMIT=0;
List ALL;
LOAD;
Nulls COD_SOURCE_INFO=N
      NO_RELEVE=N
      COD_SERIE_HIST=N
      COD_TYP_sTRATIF=N
      NO_NOTIF_IML=Y
      CHEF_MISS_MPO=Y
      NARRATIF=Y;
Quit;
Goliath1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 14h19   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
Bonjour,

Tu peux utiliser une séquence oracle, du coup tu n'auras pas de doublons dans ta base oracle.

Cordialement
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui 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 02h56.


 
 
 
 
Partenaires

Hébergement Web