Ankündigung

Einklappen
Keine Ankündigung bisher.

Aus einer CSV eine neue MySql Tabelle erzeugen

Einklappen

Neue Werbung 2019

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

  • Aus einer CSV eine neue MySql Tabelle erzeugen

    Hallo zusammen,
    ich habe eine Umfangreiche CSV-Tabelle mit 26 Spalten und demnächst bekomme ich noch mehr zum Neuerstellen von Tabellen
    Einen direkten Mysql befehl finde ich nicht der direkt eine neue Tabelle anlegt entprechend der ersten Zeile
    Gibt es eintool, oder ein script der dies kann ?? +
    damit ich mir einiges an zeit ersparen kann ?

  • #2
    Ev. hilft dir ja das: http://dev.mysql.com/doc/refman/5.7/en/load-data.html

    Kommentar


    • #3
      http://dev.mysql.com/doc/refman/5.7/...ge-engine.html

      Kommentar


      • #4
        Zitat von DrWho Beitrag anzeigen
        Gibt es eintool, oder ein script der dies kann ?? +
        damit ich mir einiges an zeit ersparen kann ?
        Also ein PHP Script zu schreiben das das macht, sollte nicht länger als 30min dauern. Und dabei trinke ich nebenbei noch einen Kaffee

        Gruß

        Claus

        Kommentar


        • #5
          Zitat von Thallius Beitrag anzeigen

          Also ein PHP Script zu schreiben das das macht, sollte nicht länger als 30min dauern. Und dabei trinke ich nebenbei noch einen Kaffee
          Du brauchst 25 Minuten für einen Kaffee?

          Kommentar


          • #6
            Deine Datenbankstruktur dürfte suboptimal ausfallen, wenn du
            Zitat von DrWho Beitrag anzeigen
            direkt eine neue Tabelle anlegt entprechend der ersten Zeile
            Das lese ich so, dass die erste Zeile deiner CSV die Feldnamen deiner neuen Tabelle werden sollen.

            Kommentar


            • #7
              Sorry das ich jetzt erst wieder reagiere, ich hatte einiges zu tun
              Genau
              jspit
              , die frage ist wie bekomme ich es hin ??

              Ich bin ehr ein anwender als Programmierer ich sitze damit noch in den kinderschuhen und versuche erst mal dahinterzusteigen , also ich trink den kaffee in 5 min und zum erledigen in PHP Tage sorry das ich noch anfänger bin

              Kommentar


              • #8
                Eine Antwort hast Du schon in ersten Beitrag von hausl erhalten. Der Link erklärt den Befehl für das Load mit Beispielen.
                Klassische Datenbank sind aber bei der Struktur ihrer Daten recht pingelig, deswegen gibt es wahrscheinlich kein System (ich kenne keins), das aus einer CSV direkt eine neue Tabelle erstellt. Das musst du also selber machen. Die gute Nachricht ist, als Tool brauchst Du dafür nur einen Editor. Im Link von hausl steht beschrieben, wie Du in einem Befehl eine Tabelle anlegst und diese mit Daten aus der CSV befüllst.
                Ich könnte jetzt stundenlang schreiben, was dabei alles zu beachten ist (Tabellenstruktur usw., wurde ja hier schon angerissen), aber ich versuch es mal kurz zu machen:
                1. Lege eine Tabelle an, die soviel Textspalten (groß genug, dass die Werte auf jeden Fall reinpassen) hat, wie die CSV und lade die Daten dort rein.
                2. fertig.
                3. Wenn Du die Daten irgendwie produktiv weiter nutzen willst und das etwas über eine Nachschlagefunktion hinaus geht, besonders das Ändern von Daten und das (gemeinsame) Arbeiten mit den Daten, dann lege (mindestens) eine 2. Tabelle an, die genau Deine Anforderungen abdeckt und importiere die ggF. formatierten, bereinigten Daten in diese 2. Tabelle. Dazu musst Du Dich dann mal etwas mit relationalen Datenbanken und Normalisierung und SQL beschäftigen.

                Kommentar


                • #9
                  danke erst mal für die zahlreichen Infos, ich habe nun mittlerweile ein script geschrieben, mit hilfe von codeschnipseln und der erste teil funktioniert auch wie gewünscht. nun kommt ein neues problem aber dafür mach ich ein anderen Tread auf , als danke noch mal für eure hilfe

                  Kommentar


                  • #10
                    Hllo zusammen, ich bin dabei ein improt script zu schreiben für OsCommerce 2.3.4 in PHP, wobei ich mich immer noch als Anfänger bezeichne , was auch der Fall ist, nun zum Problem im ersten Schritt wird die Tabelle vorbereitet um diese in SQL dann umzuwandeln, also Die Händlerliste wird also konvertiert so wie ich sie zum einlesen letzendlich brauchen. Das klappt nun auch so weit. Doch das Problem was ich dabei nun habe ist das ich mehre gleiche Produkte habe , mit verschiedenen Eigenschaften, diese möchte ich rausfiltern und direlkt in einer SQL form zusammen fassen.

                    so sieht mein schript bis jetzt aus:

                    PHP-Code:
                    <?php
                     $adr
                    ="http:grosshändlerl/b2b_feed.php?key=apikey=csv&type=csv&lang=de";
                     
                    $bldlok1 ="http://webseite/shop/bilder/x/";
                     
                    $bldlok2 ="http://webseite/shop/bilder/m/";
                     
                    $bldlok3 ="http://webseite/shop/bilder/l/";

                     
                    $tab1="preisliste.txt";
                     
                    $tab2="preisliste.csv";
                     
                    $tab3="preislst.txt";

                     
                    $sqldat1="hersteller";
                     
                    $sqldat2="kategorien";
                     
                    $sqldat3="produkt";

                     
                    $prslst1 "erotic.csv";
                     
                    $prslst2 "products.csv";
                     
                    $prslst3 "prsl1.csv";
                     
                     
                    $heute date("d.m.Y \\u\\m H:i \\U\\h\\r");
                     echo 
                    $heute." Downloaden der Händlerpreisliste  ".$prslst3."  <br />";
                     
                    $fh=fopen($prslst3,"w");
                     
                    $fr=fopen($adr,"r");
                     while(
                    $str=fread($fr,4096)) {
                      
                    fwrite($fh,$str);
                      }
                      
                    fclose($fh);
                     
                    fclose($fr);
                     
                     
                    // -----------------------------------------------------------------------------------------------
                     // --             Konvertiereung prslst1 zu Tab1                -------------------------------
                     // -----------------------------------------------------------------------------------------------


                     
                    $heute date("d.m.Y \\u\\m H:i \\U\\h\\r");
                     echo 
                    $heute." Konvertieren von ".$prslst3." zu ".$tab1." <br />";
                     
                    $mtmp = array();                       
                     
                    $orgdat file($prslst3);            
                     
                    $fp fopen($tab1,'w');               
                      foreach(
                    $orgdat as $num => $line) {  
                       
                    //$line=str_replace(""","",$line);   
                       
                    $row explode(";"$line);           
                       if(!
                    array_key_exists($row[0], $mtmp)) {       
                        if (
                    $num == 0) continue;           
                        
                    $lag=str_replace("\n","",$row[10]);   
                        
                    $hek=str_replace(",",".",$row[4]);               
                        
                    $gew=str_replace(",",".",$row[13]);               
                        
                    $preis=str_replace(",",".",$row[4]);           
                        
                    $text=$row[33]."<br> Gewicht: ".$row[14]."<br> Weichmacher: ".$row[15]."<br> Batterie: ".$row[16]." Typ: ".$row[17]."<br> Farbe:".$row[18]."<br> Wasserfest: ".$row[19]."<br> Material: ".$row[20]."<br> Länge: ".$row[21]."<br> Durchmesser: ".$row[22]."<br> Controller: ".$row[23]."<br> Vibration:".$row[24]."<br> Spannung: ".$row[25]."<br> Waschtemparatur: ".$row[26]."<br> Bleichmittel".$row[27]."<br> Bügeln: ".$row[28]."<br> Chem. Reinigung:".$row[29]."<br> Wäschetrockner:".$row[30];
                        
                        if (
                    $row[6] =="") {                              
                         
                    $lag=0;                                      
                        }                            
                        if (
                    $preis != "0.00") {
                          if (
                    $hek/$preis <= 0) {                           
                            
                    $uvp=$hek*1.30;                          
                         }else{                                      
                          
                    $uvp=$preis;                                
                         }
                        }
                        if (
                    $preis == "0.00") {
                         
                    $uvp=$hek*1.30;
                        }
                        if (
                    $uvp != "0.00"  ) {                       
                         if (
                    $row[14] != 0) {                          
                             
                    fwrite($fp,$row[0]."\t ".$row[2]."\t".$row[3]."\t".$row[7]."\t".$row[9]."\t".$hek."\t".$uvp."\t".$lag."\t".$gew."\t".$row[12]."\t".$row[34]."\t".$row[38]."\t".$row[11].$text."\n"); // schreibe Zeile in Zieldatei
                          
                    }                                        
                        }                                     
                       }                                          
                      }                                              
                     
                    fclose($fp);
                    ich hoffe mir kann da jemand helfen also produktnummer ist $row[0] zbd die eigenschaft in $row[12]
                    danke im vorraus

                    Kommentar


                    • #11
                      Ich verstehe deine Topic-Frage nicht ganz. In phpMyAdmin kann man doch "rohe" Tabellen, wie eine CSV, in eine bestehende Datenbank importieren und die erste Zeile als Spaltennamen angeben.
                      Du musst in phpMyAdmin zu der Datenbank wechseln, in die diese CSV Tabelle importiert werden soll.
                      Hier der Name der Datenbank "csvdata", die von dir vorher angelegt werden muss, Name ist austauschbar.

                      Server: localhost »Datenbank: csvdata

                      - auf den Reiter "Importieren" klicken.

                      - Datei auswählen. (Achtung, die CSV sollte in UTF-8 konvertiert sein. Wie das geht, wenn nicht, gibts Tutorials mit OpenOffice)
                      - "Format" CSV auswählen
                      - "Spalten getrennt mit:" [das passende eingeben]
                      - "Die erste Zeile der Datei enthält die Spaltennamen." [wenn gewünscht dort ein Häckchen setzen].

                      Wenn du das per PHP Funktion lösen willst, musst du phpMyAdmin nur den SQL Befehl entlocken, den es dazu gebraucht.

                      Um das ganze tiefer zu verstehen, schaue dir mal eine CSV Datei und eine SQL Datei in einem Texteditor (notepad++) an, also die rohen Daten, den Quellcode sozusagen. Nehme eine kleinere Tabellen.

                      Kommentar


                      • #12
                        Warum einen neuen Thread, ist ja kein neues Thema.

                        [MOD: Threads zusammengeführt]

                        Kommentar


                        • #13
                          Alo ich hab die Tabelle schon verkleinert , mir geht nur darum die doppelten produktnummern dauszulassen und den aber zu den doppelten produktnummern zugeordneten eigenschaften zu separieren: zB

                          Produkt Eigenschaft

                          A ROT
                          B Grün
                          C Grün
                          A Blau
                          C Weis

                          So das das prdukt nur einmal auftaucht aber zu der zugeordneten Produkt ID seperat die eigenschaften stehen also

                          1 = A 1=Rot 2=Grün 3=Grün
                          2 = B 1=Blau 3=Weis
                          3 = C

                          Kommentar

                          Lädt...
                          X