Anzeige:
Ergebnis 1 bis 11 von 11

Thema: CSV Dateien vergleichen und ändern

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jun 2023
    Beiträge
    5

    CSV Dateien vergleichen und ändern

    Hallo,
    für einen Internetauftritt: https://gk.historic.place/ benötige ich fachliche Hilfe.
    Ich bin weder Programmierer, noch beruflich in der IT tätig.
    Folgendes Problem, es existieren zwei sehr große CSV-Dateien. Eine historic.csv und eine FehlendeObjekte.csv (Beispiel im Anhang).
    Beide Dateien haben die Gemeinsamkeit der ersten drei Spalten id, lon, und lat.
    In der historic.csv befindet sich eine große Anzahl wo die Einträge lon 0.000000 und lat 0.000000 haben.
    Die FehlendeObjekte.csv hat zu den Id's mit den ungültigen lon und lat auswertbare Geo-Koordinaten.
    Wie bekomme ich die gültigen Koordinaten der FehlendeObjekte.csv in die historic.csv ?
    Es handelt sich ca. um 100000 Zeilen mit lon 0.000000 und lat 0.000000. Das ganze soll auf einem Linux-Server laufen.

    Schonmal danke im Vorraus von Lutz
    Angehängte Dateien Angehängte Dateien

  2. #2
    Registrierter Benutzer
    Registriert seit
    Jun 2005
    Beiträge
    42
    Hallo Lutz,

    ich gehe mal davon aus, dass Du das nur einmalig machen musst.
    Dann geht das ohne große Programmierung in Excel (kann auch inzwischen > 100.000 Zeilen). Beide CSV in zwei Tabellen packen und dann per SVerweis "verlinken". Mit dem Stichwort findest Du auch genug Beispiele wie man das macht.

    Gruß jac
    Ich gehöre zu den Leuten, die – vor die Alternative gebracht: gut essen oder gut schlafen – sich für das gut schlafen entscheiden.
    A. Einstein

  3. #3
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.061
    Alternativ die "falsche" Datei in eine z.B. MySQL importieren und die "richtige" Datei via Update-Statements drüberlaufen lassen.
    Ich bin root - ich darf das.

  4. #4
    Registrierter Benutzer
    Registriert seit
    Jun 2023
    Beiträge
    5
    Leider nein, die historic.csv wird wöchentlich automatisch aus OSM-Daten neu erstellt.

    Grüße von Lutz

  5. #5
    Registrierter Benutzer
    Registriert seit
    Jun 2023
    Beiträge
    5
    Zitat Zitat von marce Beitrag anzeigen
    Alternativ die "falsche" Datei in eine z.B. MySQL importieren und die "richtige" Datei via Update-Statements drüberlaufen lassen.
    Danke, hört sich für mich kompliziert an, da keine Erfahrung mit MySQL

    Grüße von Lutz

  6. #6
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Tja... dann gib das doch als Auftrag an einen Programmierer.
    ¡Nuestro amigo... el Computador!

  7. #7
    Registrierter Benutzer
    Registriert seit
    Jun 2005
    Beiträge
    42
    Also die historic.csv wird wöchentlich neu generiert? Dann müssen die fehlenden Koordinaten doch dahin, wo die Datei generiert wird, also in die Quelle. Kannst Du das nicht dort veranlassen?
    Ich gehöre zu den Leuten, die – vor die Alternative gebracht: gut essen oder gut schlafen – sich für das gut schlafen entscheiden.
    A. Einstein

  8. #8
    Registrierter Benutzer
    Registriert seit
    Jun 2023
    Beiträge
    5
    Ja, so war es auch einmal, die ganze Sache wird mit Java generiert, was jetzt an irgendeine Grenze gestoßen ist, und eben diese Fehler generiert.
    Es wird noch eine Weile dauern, bis die Software angepasst ist. Deshalb habe ich mir diese Zwischenlösung überlegt.
    Händisch funktioniert es jetzt mit sqlite, danke für den Tipp.
    Ich werde es auch noch automatisiert hinbekommen, danke denen die helfen wollten

    Grüße von Lutz

  9. #9
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.551
    Inwieweit das folgende skaliert, musst Du selbst rausfinden:

    Code:
    #!/bin/bash
    
    cp historic2.csv historic2.csv.work
    
    while read l; do   
    
    
    if $(echo  "$l" | grep -q "^w"); then
      id=`echo $l| awk '{print $1}'` ; echo id $id
      lon=`echo $l| awk '{print $2}'` ; echo lon $lon
      lat=`echo $l| awk '{print $3}'` ; echo lat $lat
      sed -i "/^$id/s/[w0-9]*\t[0-9.]*\t[0-9.]*/${id}\t${lon}\t${lat}/"  historic2.csv.work 
    
    
    fi         
    
    done < FehlendeObjekte2.csv

  10. #10
    Registrierter Benutzer
    Registriert seit
    Jun 2023
    Beiträge
    5
    danke :-) läuft zwar ein paar Stunden, aber das stört Nachts niemanden.

    Grüße von Lutz

  11. #11
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.551
    Die Debug-Infos können unterbleiben und damit eine gewisse Beschleunigung erreicht werden.
    Zur Funktionsprüfung wird pro ersetzter Zeile wird dann nur noch ein Punkt ausgeben:

    Code:
    #!/bin/bash
    
    cp historic2.csv historic2.csv.work
    
    while read l; do   
    
    
    if $(echo  "$l" | grep -q "^w"); then
      id=`echo $l| awk '{print $1}'` 
      lon=`echo $l| awk '{print $2}'` 
      lat=`echo $l| awk '{print $3}'`
      sed -i "/^$id/s/[w0-9]*\t[0-9.]*\t[0-9.]*/${id}\t${lon}\t${lat}/"  historic2.csv.work 
      echo -n .
    
    fi  
        
    done < FehlendeObjekte2.csv

Ähnliche Themen

  1. Dateien vergleichen
    Von dilindam im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 11.06.10, 20:07
  2. Verzeichnisse Dateien vergleichen
    Von minisalami im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 19.01.10, 22:44
  3. 2 Dateien Vergleichen (mit GUI!)
    Von michiS im Forum Anwendungen Allgemein, Software
    Antworten: 11
    Letzter Beitrag: 18.12.06, 18:37
  4. Shellskript: Variablen vergleichen und ändern
    Von dukenuker im Forum Linux Allgemein
    Antworten: 0
    Letzter Beitrag: 26.06.06, 11:40
  5. mit ftp o.ä. dateien vergleichen
    Von Ic3cAk3 im Forum Linux als Server
    Antworten: 5
    Letzter Beitrag: 20.10.04, 13:41

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •