Proc Import vs. Spaltenformatierung

Habe hier leider nicths dazu gefunden... Daher nochmal die Frage.
Wir verwenden die Standardroutine...
options validvarname=V7;
proc import
datafile="datum.csv"
out=work.data_TEMP
dbms=csv
replace;
delimiter=';';
getnames=yes; /* ERSTE ZEILE ALS SPALTENÜBERSCHRifT ERKENNEN */
run;

... um mittels Macro zig Dateien einzulesen. Allerdings habe ich bei der Import das Problem, daß SAS selbst die Spaltenbreite anhand der ersten paar Zeilen definiert. Wenn ich dann also längeren text in Zeile 100 stehn habe, schneidet SAs beim Import ab.
Gibt es eine Funktion, womiit ich die Spaltenbreite ausreichend groß definieren kann, ohne zu wissen, wieviele Spalten icheinlese ?

Gruß, Sven

Option scantext = yes

Mit dieser Option sollte es funktionieren (aber wohl erst ab V9).

proc import out=work.adsimport
datafile="adressen.xls"
dbms=excel2000 replace;
sheet=
"ads";
getnames=yes;
mixed=yes;
scantext=yes;
run;

Den Testcode habe ich hierher:

http://www.urz.uni-heidelberg.de/statistik/kurse/sastreff/2006-07-07/2006-07-07.pdf

nur bei xls

Funktioniert nur bei xls.
24 scantext=yes;
________
180
2 The SAS System 06:55 Monday, March 31, 2008

25 usedate=yes;
_______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.

Habe aber csv. Sonst wäre scantext wohl genau die Option.

Guessingrows

Hallo nochmal,

dann könnte es vielleicht mit der Option guessingrows gehen. Per Default scant proc import immer nur die ersten 20 Datensätze. Mit der Option guessingrows kann man diese Anzahl verändern, siehe etwa hier:

http://groups.google.com/group/comp.soft-sys.sas/browse_thread/thread/431d4ec28f5bf977

oder hier (Punkt 3):

http://dc-sug.org/helpdesk3.pdf

Die Zahl der Datensätze muss dann nur groß genug gewählt werden, das Maximum liegt aber wohl hier bei 32.767.

Weiteres Problem: Das Scannen ist recht rechenintensiv.

Gruß

Roman Kolbe

Guessinggrow läuft

Habe eine Proc Import, die eine csv einließt und beim Einlesen entsprechende Spalten nach größter Ausprägung scannt und so das Format / Length vergibt.
Allerdings habe ich jetzt festgestellt, daß SAS ohne eine eindeutiges Schema zu erkennen, die Spalten größer macht als in Wirklichkeit diese sind.
Beispiel...

in CSV ist der größte Text 14 zeichen in SAs wird die Spalte jedoch mit 16 belegt oder in CSV habe ich 73 Zeichen in SAS plötzlich 84 oder CSV = 169 und in SAS dann 212 Zeichen. Wie kann soetwas passieren ?

proc import
datafile="schluessel.csv"
out=work.test_TEMP
dbms=csv
replace;
delimiter=';';
getnames=yes; /* ERSTE ZEILE ALS SPALTENÜBERSCHRifT ERKENNEN */
guessingrows=50; /* SCANNT JEDE SPALTE UND ERMITTELT GRÖSSTEN ZELLENWERT */
run;

Danke.

Gruß, Sven