Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
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 04/04/2011, 16h26   #1
Invité de passage
 
Inscription : avril 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 1
Points : 0
Points : 0
Par défaut Problème conversion csv => apparition de "J"

Bonjour à tous


Je travaille comme Help Desk et je sèche sur le problème d'une utilisatrice.

Peut-être pourrez-vous m'aider ?

Elle convertit une table SAS en fichier CSV avec le programme suivant :

Le délimiteur est "|".

Code :
1
2
3
4
5
PROC EXPORT DATA= tab.fic
            OUTFILE= "chemin\test.csv"
            DBMS=csv REPLACE;
            DELIMITER='|';
RUN;
Sur certains enregistrements, et de façon aléatoire, elle obtient l'apparition de la lettre "J"

=> …|03/09J2010|C|JALISTOJBA|…
alors qu'il faudrait avoir

…|03/09/2010|CALISTO|BA|…

MERCI D'AVANCE A QUI POURRA M'AIDER


Bien cordialement


Jade.
jade94700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 16h32   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
as tu essayé avec dbms=dlm . ?

Code :
1
2
3
4
5
PROC EXPORT DATA= tab.fic
OUTFILE= "chemin\test.csv"
DBMS=dlm REPLACE;
DELIMITER='|';
RUN;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/04/2011, 16h53   #3
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Bonjour,

J'avais mis cette macro sur le forum, si ça ne dérange pas ton utilisatrice de s'en servir...


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
%LET chemin=C:\;
 
filename myfil "&chemin\SORTIE.csv";
 
 
%MACRO IFDMCSV1 (NTAB= , FILENM=);  
 
%MACRO TRT;                            
%DO I=1 %TO &NB;                      
%PUT &&VAR&I;                         
%END;                                 
DATA _NULL_;                          
FILE &FILENM. MOD DLM="|" ;           
SET &NTAB;                            
PUT %DO I=1 %TO &NB; &&VAR&I %END;;   
RUN;                                  
%MEND;                            
 
 
PROC CONTENTS DATA = &NTAB                          
	OUT  = TEMP(KEEP=NAME TYPE VARNUM)                 
	NOPRINT;                                           
RUN;                                                
 
PROC SORT DATA=TEMP;                                
	BY VARNUM;                                         
RUN;                                                
 
DATA TEMP;                                          
	SET TEMP;                                          
	VAR=COMPRESS(QUOTE(NAME));                         
	CALL SYMPUT(COMPRESS("VAR"||_N_),COMPRESS(NAME));  
	CALL SYMPUT("NB",COMPRESS(_N_));                   
RUN;                                                
 
PROC TRANSPOSE DATA = TEMP                          
	OUT  = TEMP;                                       
	VAR VAR;                                           
RUN;                                                
 
 
DATA _NULL_;                  
	FILE &FILENM. DLM="|" ;      
	SET TEMP;                    
	PUT COL1-COL&NB;             
RUN;                          
%TRT;                         
 
%MEND IFDMCSV1;                
%IFDMCSV1 (NTAB=Sashelp.Class , FILENM=myfil);

Bon courage.

ps: faut pas chialer pour un "J" Jade!
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 11h55   #4
Membre habitué
 
Femme Géraldine CADE DESCHAMPS
Support Clients SAS (France et Europe)
Inscription : février 2010
Messages : 62
Détails du profil
Informations personnelles :
Nom : Femme Géraldine CADE DESCHAMPS
Localisation : France

Informations professionnelles :
Activité : Support Clients SAS (France et Europe)
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 62
Points : 139
Points : 139
Bonjour,

1. il faut essayer avec DBMS=dlm , et en donnant le code hexadecimal du pipe :

Code :
1
2
3
4
5
PROC EXPORT DATA= SASHELP.CLASS 
            OUTFILE= "C:\temp\class.csv" 
            DBMS=DLM REPLACE;
     DELIMITER='7C'x; 
RUN;

2. cela pourrait provenir de la table. Quel est l'encoding de la table ? Sur quel OS est-elle hébergée ? est-ce une table SAS, ou bien s'agit-il d'un DBMS ?

3. à chaque fois que le programme est lancé, est-ce que c'est toujours les mêmes lignes qui sont concernées ?

Géraldine Cade
Géraldine_Cade_SAS 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 05h16.


 
 
 
 
Partenaires

Hébergement Web