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 03/02/2012, 13h22   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 33
Points : 10
Points : 10
Par défaut Import csv problème fin de ligne

Bonjour,

J'essaie d'importer un fichier csv sous SAS comme cela :
Code :
1
2
3
4
5
6
7
8
 
DATA matab;
	length   var1 $9. var2 $10. var3 $10. var4 3. var5 $500.;
	INFILE "monchemin\monfichier.csv" dlm=';' firstobs=3 ;
	input    var1 $ var2 $ var3 $ var4 var5 $;
	format   var1 $9. var2 $10. var3 $10. var4 3. var5 $500.;
	informat var1 $9. var2 $10. var3 $10. var4 3. var5 $500.;
run;
Mon importation "bugue" lorsque la dernière variable est vide car SAS ne comprend pas le caractère de retour à la ligne.
Je ne peux pas le changer moi même avec un rechercher-remplacer car je vais en faire un macro SAS qui va permettre d'importer toutes les semaines une dizaines de fichiers et de les traiter.

J'ai essayer de modifier le fichier initial avec cette méthode :
Code :
1
2
3
4
5
6
7
8
9
 
date _NULL_ ;
   INFILE "monchemin\monfichier.csv"; 
   file    "monchemin\monfichier2.csv"; 
   input;
   _infile_ = TRANWRD (_infile_, "
", ";" ) ; /*j'ai essayer avec "0D"x et "0D0A"x mais ca ne fonctionne pas non plus*/
   put _infile_ ;
RUN ;
Ca modifie bien mon fichier mais je n'arrive pas à lui faire comprendre qu'il faut changer mon caractère de fin de ligne (dans le cas présent il remplace tous les blancs par un ";")

Auriez-vous une solution?

Merci d'avance
cemyr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 13h59   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 472
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 472
Points : 2 835
Points : 2 835
Est-ce que le CSV a été créé sur le même système d'exploitation que celui sur lequel s'exécute ta session SAS ? Ca ressemble à un mauvais tour de cochon entre Windows et Unix, qu'on résout avec l'option
Citation:
TERMSTR=
specifies the end-of-line character for the file. Use this option to share files between the UNIX and Windows operating environments. Valid values are:

CRLF
Carriage return line feed. Use TERMSTR=CRLF to read Windows formatted files. CRLF is the default.

LF
Line feed. Use TERMSTR=LF to read UNIX formatted files.

NL
New line. Use TERMSTR=NL to read UNIX formatted files.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/02/2012, 14h33   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 33
Points : 10
Points : 10
Ces fichiers sont envoyés par une agence publique nationale; Désolée pour les stéréotypes mais j'ai du mal à croire qu'ils utilisent unix - mais je peux leur demander -

Ceci étant dit, MERCI - j'ai utilisé l'option TERMSTR et ca fonctionne!!
Ca m'ajoute un caractère inconnu (qui s'affiche com un rectangle) à la fin de chaque valeur de ma var5 mais il me suffit de le supprimer et le tour est joué
cemyr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h16.


 
 
 
 
Partenaires

Hébergement Web