2016-05-09 7 views
0

Ich versuche, Daten aus einer Reihe von Protokolldateien zu importieren. Hier ist, wie ich es annähere:Probleme beim Importieren von Daten in Stata mit "Datei" und einem lokalen Makro

Ich habe die Protokolldateien in einem separaten Verzeichnis und ich erzeuge eine TXT-Datei mit der Liste der Dateinamen in diesem Verzeichnis. Ich lese dann diese TXT-Datei und anschließend die Dateinamen in einer Schleife mit einem Import-Befehl, um die Daten zu bringen. Dieser Prozess funktionierte, wenn ich die Do-Datei vor etwa 6 Monaten zuletzt ausgeführt und jetzt funktioniert es nicht.

Die Grundlagen des Codes wie folgt aussehen:

cd "filepath\logs\" 
! dir cpuusage*.log /a-d /b /o:-d >"filepath\filelist.txt" 

file open myfile using "filepath\filelist.txt",read 
file read myfile line 

import delimited using `line', delim(" ") varnames(nonames) 

Das Ergebnis dieser Importbefehl ist (0 Vars, 0 obs) trotz der Tatsache, dass filelist.txt eine Liste von 14 Dateinamen hat.

Ich bin ein Neuling, also hoffe ich wirklich, dass es etwas Einfaches und Offensichtliches gibt, das ich übersehe. Ich verstehe immer noch nicht, warum genau diese Methode vor sechs Monaten funktioniert hat ... Irgendwelche Gedanken?

+0

Haben Ihre Dateinamen in filelist.txt eingebettete Leerzeichen? Wenn dies der Fall ist, muss Ihr im Import-Trennzeichen enthaltener Befehl Anführungszeichen hinzufügen, also "". –

+0

Die Implikation davon ist, dass der Befehl 'import' als legal akzeptiert wurde, aber denkt, dass er eine leere Datei gefunden hat. Es ist schwer zu verstehen, ohne Ihre Dateien zu sehen. Versuchen Sie, die Datei mit 'type' einzugeben, kurz bevor Sie' importieren'. –

Antwort

0

Ich glaube, Sie fs dafür verwenden können:

cd "filepath\logs\" 
fs cpuusage*.log 
foreach f in `r(files)' { 
    import delimited using `f', delim(" ") varnames(nonames) 
} 

Es ist schwer, mehr zu helfen, ohne zu wissen, was Ihre Log-Dateien aussehen. Ich würde vorschlagen, dass Sie versuchen, eines über das Menü zu importieren, um die Syntax richtig zu machen.

+0

'fs' stammt von SSC und muss von' ssc install fs' installiert werden, bevor Sie es verwenden können. –