Ankündigung

Einklappen
Keine Ankündigung bisher.

csv Daten in sql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • csv Daten in sql

    Hallo

    Ich hab mal ne Frage.
    Ich möchte CSV Datei einbinden.

    Mit dem Format

    20100720201824 rain0 0 0 153
    20100720201824 th0 212 54 0115
    20100720201824 thb0 278 38 0122 9762 -1 10100
    20100720201824 wind0 180 0 0 0212
    20100720201838 rain0 0 0 153
    20100720201838 th0 212 54 0115
    20100720201838 thb0 278 38 0122 9761 -1 10099
    20100720201838 wind0 180 7 0 0212



    Die Daten sind von Meteohub eienr Wettersoftware.
    Am Anfang stehen die Datumswerte danach die einzelnen Parameter.
    Wie kann ich das in einer sql datenbank einbinden und wie kann ich diese zusammenfassen (keine doppelten Datumswerte)

    MfG AR


  • #2
    Das ist wieder mal eine von den „wie kann ich ...“-Fragen, die den Eindruck machen, dass du vorher noch gar nicht versucht hättest, selber Lösungsansätze zu finden.

    Bitte lies http://www.php.de/php-einsteiger/675...sumfragen.html

    Kommentar


    • #3
      keine doppelten Datumswerte
      Kommt ganz darauf an, nach welchem Schema man die Werte vereinen soll.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Hallo

        Ich habe mir schon Gedanken gemacht.
        Aber ich frage mich wie kann ich die Daten überhaupt in ein Datenbank unter bringen ?
        Die einzelnen Zeilen haben auch unterschiedliche Anzahl an Werte.
        Wenn ich eine Tabelle in einer Datenbank erzeuge und dann manuell einfügen will steht dann das da "Ungültige Anzahl an Feldern in Zeile 1."

        MfG

        Kommentar


        • #5
          Ich habe mir schon Gedanken gemacht.
          Und auch zu einem Ergebnis gekommen? _wir_ kennen die Bedeutung Deiner Daten nicht.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Zitat von rieders Beitrag anzeigen
            Die einzelnen Zeilen haben auch unterschiedliche Anzahl an Werte.
            Warum?

            Ohne das Datenmodell genauer zu kennen, kann man nicht viel dazu sagen, wie man das in einer Datenbank am besten abbildet.

            Kommentar


            • #7
              Zitat von rieders Beitrag anzeigen
              Hallo

              Ich hab mal ne Frage.
              Ich möchte CSV Datei einbinden.

              Mit dem Format

              20100720201824 rain0 0 0 153
              20100720201824 th0 212 54 0115
              20100720201824 thb0 278 38 0122 9762 -1 10100
              20100720201824 wind0 180 0 0 0212
              20100720201838 rain0 0 0 153
              20100720201838 th0 212 54 0115
              20100720201838 thb0 278 38 0122 9761 -1 10099
              20100720201838 wind0 180 7 0 0212



              Die Daten sind von Meteohub eienr Wettersoftware.
              Am Anfang stehen die Datumswerte danach die einzelnen Parameter.
              Wie kann ich das in einer sql datenbank einbinden und wie kann ich diese zusammenfassen (keine doppelten Datumswerte)

              MfG AR
              PHP-Code:
              $toImport file("deine-komische-csv-die-nicht-comma-seperated-ist-sondern-linespace-seperated.csv");

              $datensaetze 0;
              $rows=array();
              foreach ( 
              $toImport as $key => $value ) {
               
              // der übersicht wegen, warum wieso und weshalb unten
               
              $cells explode(" "$value);
               
              $row['ich'] = $cells[0];
               
              $row['bin'] = $cells[1];
               
              $row['ein'] = $cells[2];
               
              $row['value'] = $cells[3];

               
              // werte an "reale adressen" gesetzt, zusammenfügen zu einem row:
               
              $rows[] = $row;

               
              // datensaetze hochzählen
               
              $datensaetze++;
              }
              echo 
              $datensaetze." wurden eingelesen.<br />";
              // es würde auch in einem SQL-Statement gehen, aber hier mal als foreach:
              $db mysqli_connect($hier,$hin,$verbindest,$du) or die("bin tot");

              $daten = array();
              foreach ( 
              $rows as $key => $row ) {
                if ( !
              array_key_exists($row['ich'], $daten) {
                  
              $daten[$row['ich']] = true;
                  
              $db->query("INSERT INTO `here` ( `ich`, `bin`, `ein`, `value` ) VALUES ( '".$row['ich']."', '".$row['bin']."', '".$row['ein']."', '".$row['value']."' )") or die("das ging schief!!! Datensatz: ".($key++));
                  echo 
              "Datensatz '".($key++)."' in Datenbank eingefügt.";
                } else {
                  echo 
              "Datensatz '".($key++)."' übersprungen, Datum war bereits vorhanden."
                
              }

              Die umsetzung in ein anderes Array(format) dient der übersicht für diesen Quellcode, damit du weißt was WO vorallem WIE eingefügt wird. Im Grunde genommen ist das alles.

              Was der Quellcode da oben nicht behandelt:
              - Leere Zeilen
              - Zeilen mit zuwenig Linespace-Sperated Feldern
              - Ob die datei erfolgreich geöffnet werden konnte
              - SQL Inject Prevention ( was aber bei deinem Input-Format relativ egal ist )
              - Deine Entgültige Datenbankstruktur
              - Nach was sortiert werden soll bevor gruppiert wird
              - Gruppierung im eigentlichen Sinne

              Das dort oben löst allerdings deinen ersten Teil deiner Aufgabe und gilt als möglicher Lösungsansatz für den 2ten Teil ( Grouping ).

              Eins Noch: Viele Wege führen nach Rom, würde ich vor so einer Aufgabe stehen würde ich das anders lösen als hier oben beschrieben. Aber die Version da oben ist "Verständlicher" als die die ich wählen würde.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Und ich wette er sieht den Code, Kopiert sich den raus und liest den Rest nicht mehr
                Lerneffekt = 0 ^^

                Kommentar


                • #9
                  Zitat von ToxicToast Beitrag anzeigen
                  Und ich wette er sieht den Code, Kopiert sich den raus und liest den Rest nicht mehr
                  Lerneffekt = 0 ^^
                  Dann wird er feststellen müssen das der Code so nicht funktionsfähig ist und fragen was er falsch gemacht hat....
                  "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                  Kommentar


                  • #10
                    Zitat von rieders Beitrag anzeigen

                    20100720201824 rain0 0 0 153
                    20100720201824 th0 212 54 0115
                    20100720201824 thb0 278 38 0122 9762 -1 10100
                    20100720201824 wind0 180 0 0 0212
                    20100720201838 rain0 0 0 153
                    20100720201838 th0 212 54 0115
                    20100720201838 thb0 278 38 0122 9761 -1 10099
                    20100720201838 wind0 180 7 0 0212
                    Die einzelnen Zeilen haben auch unterschiedliche Anzahl an Werte.
                    Ich denke, du hast Daten für 4 Tabellen (rain0, th0, thb0, wind0) in einem Export. Gemeinsamer Schlüssel ist der Timestamp.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Zitat von ToxicToast Beitrag anzeigen
                      Und ich wette er sieht den Code, Kopiert sich den raus und liest den Rest nicht mehr
                      Lerneffekt = 0 ^^
                      Der Code löst nicht sein Problem..
                      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                      Kommentar


                      • #12
                        Hallo

                        Und danke für die Hilfe.
                        Nein ich habe den Code nicht Kopiert und ich werde es auch nicht.
                        Ich wollte nur ein Gedankenansatz.

                        Ich habe jetzt bemerkt das Meteohub noch eine andere CSV Datei ausgibt.
                        Vieleicht ist diese besser zu händeln ?


                        Datum,Zeit,Temp. Innenthemp,Temp. Außenthemp,Hum. Innenthemp,Hum. Außenthemp,Pressure,Regen,Wind,Wind Direction,Wind Gust
                        ,,°C,°C,%,%,hPa,l/qm,km/h,°,km/h
                        #Calibrate=1.000 #Regen0=0mm #Location=287/287m #Baro_correction=0hPa #Station=meteohub
                        ,,1,2,17,18,33,34,35,36,45,133
                        20.07.2010,22:18,27.8,21.2,38.0,54.0,976.1,0.00,0. 0,180,2.5,1009.9
                        20.07.2010,22:19,27.9,21.1,38.0,54.0,976.0,0.00,0. 0,180,2.5,1009.9


                        Leider stimmt in der oberen Zeile die Anzahl der Werte nicht.11 statt 12

                        Muss ich das von hand löschen oder kann php erst von der 5. Zeile die Daten verwenden und die Anderen ignorieren.

                        MfG AR

                        Kommentar


                        • #13
                          Lern Grundlagen -.-
                          "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                          Kommentar


                          • #14
                            Zitat von rieders Beitrag anzeigen
                            Muss ich das von hand löschen oder kann php erst von der 5. Zeile die Daten verwenden und die Anderen ignorieren.
                            PHP macht alles, was man ihm sagt. Da du offensichtlich nicht dazu in der Lage bist, geschweige denn dein Problem bzw. deine Datenstruktur darzulegen, musst du wohl ein Job-Angebot (für Geld nimmt dich bestimmt jemand an die Brust und zieht dir alle benötigten Informationen aus der Nase) draus machen oder im Script-Gersuche auf Hilfe warten.

                            Kommentar


                            • #15
                              Danke für die warmen Worte

                              Ihr scheint ja mit Wissen auf die Welt gekommen zu sein das es so manchen Preisträgern peinlich ist .
                              Naja scheint als war das meine letzte Frage hier im Forum.
                              Da ich des öfteren mit solchen Antworten rechnen muss ist es vieleicht auch besser so.

                              Also danke nochmals !!!

                              Kommentar

                              Lädt...
                              X