IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Import CSV tronqué et table numérique qui plante


Sujet :

SAS Base

  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut Import CSV tronqué et table numérique qui plante
    Bonjour ,

    J'ai problème de taille pour importer des fichier CSV de 50 000 à 150 000 lignes.

    Voici mon code pour un table avec id + 1 champ texte pour procéder à l'import n1 (fichier A):

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PROC IMPORT OUT=matable  DATAFILE="C:\fichier.csv" DBMS=csv REPLACE; delimiter=";";  GETNAMES=YES;
    RUN;

    Dans le cas présent mes données textes son tronquées. J'ai ajouté l'instruction guessingrows=3000.

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PROC IMPORT OUT=matable  DATAFILE="C:\fichier.csv" DBMS=csv REPLACE; delimiter=";"; guessingrows=3000; GETNAMES=YES;
    RUN;

    La table est bien chargée.

    Par contre maintenant les 2 tables avec un id numérique + un champ numérique second et bien j'ai 2 possibilité (fichier B et C)

    Import 1 comme ceci :

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PROC IMPORT OUT=matable  DATAFILE="C:\fichier.csv" DBMS=csv REPLACE; delimiter=";"; guessingrows=3000; GETNAMES=YES;
    RUN;

    La table passe nickel, la seconde table n'est pas chargée. Pourtant on est exactement sur la même proc import, même structure de fichier et même type de données (colonne id numérique , colonne de type numérique aussi avec des 0 ou des 1).

    Le journal me dit "La ligne 1 5XXX XXX n'est pas une données SAS" . Chose étonnant le journal de SAS génére un compteur qui renvoi le message d'erreur en disant que plusieurs millions de lignes du fichier seraient impactés. Chose impossible le fichier CSV ne dépasse pas les 50 000 lignes. Ce qui est intriguant c'est que le fichier B qui est jumeau du fichier C ne plante pas. Le fichier B fait 150 000 lignes.

    Un message d'erreur marron apparait pour la deuxieme table dans l'instruction " delimiter=";"; guessingrows=3000; " . SAS ne reconnait pas le point le virgule entre les instructions " delimiter " et " guessingrows ".

    Merci de maiguiller

  2. #2
    Membre actif
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 37
    Points : 206
    Points
    206
    Par défaut import CSV tronqué et table numérique qui plante
    Bonjour,
    Désolé d'être bref mais vous pouvez essayer de rajouter l'instruction suivante:
    Cordialement

  3. #3
    Membre éprouvé
    Avatar de Stackware
    Homme Profil pro
    ArchiDuc de la Sasserie
    Inscrit en
    Juillet 2013
    Messages
    439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ArchiDuc de la Sasserie
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2013
    Messages : 439
    Points : 1 017
    Points
    1 017
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Le fichier qui plante a-t-il été vérifié (à l'aide d'un éditeur comme Notepad++ par exemple)?

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Bonsoir

    Oui le fichier est bien passé sur notepad++ et pspad.

    Quand je mets mixed , cela ne change rien.

    Dans le journal SAS quand j'importe un autre fichier avec des données aussi numérique que texte en log j'ai ceci :

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    monidnumérique = 23658 champstexte=._error_.=1 _n_=un nombre

    Je viens de percuter un chose. Dans mes tables si le premier champs trier de la colonne est de type numérique , SAS me passe le tout en numérique. Donc les éléments de type texte seront vide. Si c'est du texte je n'ai pas de problème.

    Je vais tenter de forcer le tout avec une ligne fantôme avec comme numéro "0" et de mettre un champs texte très long. Apparemment cela passe.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Bonsoir ,

    J'ai procédé au test avec mes fichiers. J'ai mis une ligne avec un id "0" et un champ texte "blablaba" en début de fichier CSV. Les fichiers sont lus et intégrés correctement, et dans le cas présent SAS considère bien que c'est du texte et non du numérique. Il n'y a pas de "troncage" intempestif.

    En fait si SAS détecte que la ligne 1 est du numérique dans le fichier CSV, il va automatique considérer la colonne comme des nombres et non du texte. Il faut donc forcer SAS avec cette " supercherie ".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer csv dans une table sql via Python
    Par bacheld2 dans le forum Général Python
    Réponses: 6
    Dernier message: 22/04/2013, 23h01
  2. [MySQL] Script d'importation csv vers une table (mysql) via un formulaire
    Par sarabaïte dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/03/2011, 06h31
  3. Importer un txt (csv) dans une table mysql sur multimania
    Par minogttao dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/11/2006, 18h33
  4. Impossible d'importer un fichier csv dans une table sous MySQL
    Par manue85 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 20/04/2006, 12h06
  5. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo