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
Partager