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 16/06/2011, 16h30   #1
Invité de passage
 
Charles Mercier
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Charles Mercier

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 3
Points : 3
Par défaut Imporation de données : nombre maximum de caractères dans une variable

Bonjour,

J'ai un fichier xls avec une variable caractère que j'ai importé sous SAS. SAS me dit que tout va bien, mais quand je regarde la table, je vois que SAS n'a importé que les 1024 premiers caractères de chaque cellule (ce sont des textes un peu longs parfois)

Est-ce une limite maximum ou peut on la dépasser ? Et si tel est le cas, comment le faire ? Le fait-on dans une proc import ?

(j'ai la version SAS 9.2)
carl-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 17h11   #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
le maximum est : 32767 ,
après sa depend de ce que t'as mis dans ton proc import ou la :
data ;infile;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 21h23   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
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 467
Points : 2 823
Points : 2 823
Dans la proc IMPORT, il faut ajouter l'instruction
pour importer jusqu'à 20 000 caractères par valeur. Comme l'indique SAM, le maximum est de 32 767.

La syntaxe est la même que si tu utilises des options comme SHEET, GETNAMES ou MIXED.
La doc ici.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/06/2011, 11h10   #4
Invité de passage
 
Charles Mercier
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Charles Mercier

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 3
Points : 3
Bonjour Olivier et merci beaucoup pour ton aide !!

Du coup, j'ai fait :

Code :
1
2
3
4
5
6
7
PROC IMPORT DATAFILE="C:\Users\Socstat\Documents\remarquesquestionnaire.xls"
 
OUT=remarquelongue DBMS=EXCEL2000 REPLACE;
 
TEXTSIZE=30000;
 
RUN;
Mais ça ne marche toujours pas... le texte est coupé (en tout cas lorsque je visionne la table sous SAS)...
carl-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 14h19   #5
Membre expérimenté
 
Inscription : avril 2009
Messages : 537
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 537
Points : 540
Points : 540
Tu es sur que cela ne marche pas?

J'ai bien testé le code et cela fonctionne :
Code :
1
2
3
4
5
6
7
 
DATA _NULL_;
   SET remarquelongue;
   droit = substr(CHAMP,length(CHAMP) - 10);
   len = length(droit);
   put droit= len;
run;
donne:
Code :
1
2
3
4
5
6
7
8
59   DATA _NULL_;
60      SET remarquelongue;
61      droit = substr(CHAMP,length(CHAMP) - 10);
62      len = length(CHAMP);
63      put droit= len;
64   run;
 
droit=COUCOUHELLO 31324
xav2229 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 18h16   #6
Invité de passage
 
Charles Mercier
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Charles Mercier

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 3
Points : 3
Merci beaucoup pour ta réponse ! J'ai fait :

Code :
1
2
3
4
5
6
7
8
9
10
11
PROC IMPORT DATAFILE="C:\Documents and Settings\doctorant\Mes documents\Téléchargements\remarquesquestionnaire.xls"
OUT=remarquelongue DBMS=EXCEL2000 REPLACE;
TEXTSIZE=30000;
RUN;
 
 
DATA _NULL_;
   SET remarquelongue;
   len = length(_3749X11X68);
   put len;
run;
(le nom barbare _3749X11X68, c'est le nom de ma variable)

et ça me donne des nombre toujours inférieures à 255, comme si ça coupait à 255 caractères !
carl-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 18h52   #7
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
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 467
Points : 2 823
Points : 2 823
Juste pour savoir : tu as des valeurs longues dès le début de ton fichier texte ?
Visiblement (cf. la page de doc que j'avais indiquée en lien), il peut y avoir des interférences avec la clé de registre TypeGuessRows qui contrôle le nombre de lignes du classeur à importer utilisées pour définir les caractéristiques des variables dans SAS.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 19h34   #8
Invité de passage
 
Charles Mercier
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Charles Mercier

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 3
Points : 3
Effectivement Olivier, il faut "attendre" la 29ème observation avant d'avoir un texte avec plus de 255 caractères. Dois je mettre une première observation bidon avec plus de 255 caractères (style "aaaaaaaaaaaaaaaaaaaaaaaaaa") ?
carl-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 20h24   #9
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
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 467
Points : 2 823
Points : 2 823
Si tu as le droit de modifier ta base de registre, il serait plus judicieux de mettre la clé TypeGuessRows à 0. Ça prendrait en compte toutes les lignes et il y aurait moins de mystères.
Mais sinon, effectivement, l'inclusion en 1e ligne d'une valeur bien bavarde serait une solution.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h32   #10
Invité de passage
 
Charles Mercier
Inscription : janvier 2010
Messages : 18
Détails du profil
Informations personnelles :
Nom : Charles Mercier

Informations forums :
Inscription : janvier 2010
Messages : 18
Points : 3
Points : 3
Du coup je n'ai pas touché au registre, parce que ça me semblait trop dangereux, en revanche j'ai copié collé ma variable la plus bavarde en première observation et c'est bon il prend tout, nickel !!!

Merci à tous pour votre aide !
carl-9000 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 19h15.


 
 
 
 
Partenaires

Hébergement Web