alle Access-Dateien aus einem Ordner einlesen
Verfasst von AlexSolms am 23 Oktober, 2009 - 12:08
Hallo,
habe ein Problem das mit Excel- oder Textdateien schon öfter angesprochen wurde jedoch finde ich leider nichts zu dem Thema mit Access-Daten.
Und zwar möchte ich alle Access-Dateien eines Ordners automatisch einlesen lassen. Jede Access-Datei besitzt dabei eine Tabelle (der Name dieser Tabelle ist in jeder Datei gleich) die ich in jeweils ein Dataset speichern möchte.
Hat jemand damit Erfahrung?
Eine einzelne Datei lese ich mittels der Prozedur 'proc import' ein:
filename trial "c:\...\*.mdb";
proc import
out = trial
datatable = "rando_daten"
dbms = ACCESS
replace;
database = trial;
usedata = NO;
RUN;
Vielen Dank vorab!
»
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Herr Solms, das
Hallo Herr Solms,
das Beispiel funktioniert unter Windows auch mit Sonderzeichen, Leerzeichen und Umlauten im Dateipfad.
%LET Verzeichnis =
%LET Tabelle =rando_daten;
OPTIONS NOXWAIT;
X "dir ""&Verzeichnis.*.mdb"" /b /S /A:-D > ""&temppath.dir.txt""";
DATA _NULL_;
LENGTH Datei $256;
INFILE "&temppath.dir.txt" ENCODING=PCOEM LENGTH=Len;
INPUT Datei $VARYING. Len;
CALL EXECUTE ("PROC IMPORT TABLE=&tabelle OUT=&tabelle" || STRIP(PUT(_N_,best32.)) || " DBMS=ACCESS REPLACE;");
CALL EXECUTE ("DATABASE='" || strip(Datei)||"';");
CALL EXECUTE ("RUN;");
RUN;
X "del ""&Temppath.dir.txt""";
OPTIONS XWait;
Erst wird mit Hilfe des DIR-Befehls eine Textdatei mit den Dateinamen im WORK-Verzeichnis erzeugt. Die wird anschließend ausgelesen, und in ein Import-Statement eingesetzt. Die Ausgabe-Tabellen werden durchnummeriert, damit nicht die Ausgabetabelle jeweils wieder überschrieben wird.
Am Ende wird die erzeugte Textdatei wieder gelöscht.
Ich hoffe dies Beispiel hilft Ihnen weiter.
Schöne Grüße
Jan
Funktioniert. Herzlichen
Funktioniert. Herzlichen Dank!