.txt in MySQL importieren

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

  • .txt in MySQL importieren

    Hallo Leute

    Ich suche seit nun einiger zeit nach einer Beschreibung, wie man eine B.txt-Dateien per BATCH in eine MySQL-DB importiert, und nichts ist zu finden. Hab das bisher immer nur über ein PHP Script gelöst.

    Funktioniert das überhaupt...

    etwa so zb
    _________________
    echo off

    c:\Programme\wamp\apache\mysql\bin\mysql.exe -e LOAD DATA INFILE "tabelle.txt" INTO TABLE tabelle;

    _________________

    Jemand ne Ahnung?

    Gruss
    Seccho
    _____________
    Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
    [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

  • #2
    der mysql kannst du doch bestimmt einen .sql mit auf den weg geben. unter linux geht das zumindest.

    und in der sql-datei schreibst du alle sql-querys (durch ; getrennt) rein. auch dein LOAD ....
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ... ah etwa so

      mysql meinedatenbank < neuedaten.sql...

      muss ich testen

      Nochwas... wo muss die "neuedaten.sql" liegen?

      thx
      Zuletzt geändert von Seccho; 15.05.2003, 19:02.
      _____________
      Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
      [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

      Kommentar


      • #4
        > mysql meinedatenbank < neuedaten.sql...

        ja so genau.

        > Nochwas... wo muss die "neuedaten.sql" liegen?

        egal. du musst es nur bei der übergabe an mysql berücksichtigen.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Funktioniert bei mir nicht... wie übergibt man bei ner windoof-.bat der mysql.exe ein befehl wie zb. LOAD FILE INTO...?
          _____________
          Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
          [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

          Kommentar


          • #6
            ruf doch mal

            mysql.exe --help
            oder
            mysql.exe /?

            auf

            kommt da was?

            ausserdem. es gibt auch den phpmyadmin. falls du davon noch nichts gehört hast.

            www.phpmyadmin.net
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Wenn ich über die shell bzw. mysql konsole..

              c:\Programme\wamp\apache\mysql\bin\mysql.exe [ENTER]
              mysql> LOAD DATA INFILE "tabelle.txt" INTO TABLE tabelle; [ENTER]

              ...eingebe funktioniert es. In der Batch muss ich das ganze in einem Befehl ausgeben können.. lass mich natürlich gerne korrigieren

              Thnx 4 help
              _____________
              Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
              [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

              Kommentar


              • #8
                dafür gibts doch die .sql datei.

                mache dich doch mal mit dem windoof mysql-client vertraut. der kann garantiert auch eine sql.datei annehmen.

                nur wird es da nicht wie unter linux mit ...<sqldatei.sql funktionieren, sondern anders.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  mysql> \. datei.sql

                  reine txt dateien hochladen (kommata oä getrennte) geht nach meiner erfahrung seit mysql 4 nicht mehr, zumindest bekomme ich im phpmyadmin nen fehler ..

                  habs so gelöst:

                  PHP-Code:
                  <?php

                  $db 
                  = array (
                    
                  "type"    => "mysql",
                    
                  "usrname"    => "root",
                    
                  "passwd"    => "",
                    
                  "host"    => "localhost",
                    
                  "dbname"    => "tools"
                  );

                  $file file("ip2country.txt");

                  $query "INSERT INTO `ip2country` VALUES";

                  for (
                  $i 0$i count($file); $i++) {

                    list (
                  $from$to$country, ) = explode(","str_replace("\""""$file[$i]));
                    
                  $query .= " ({$from}{$to}, '{$country}')" . ($i == (count($file) - 1)? """, ");

                  }

                  include(
                  "DB.php");

                  $db DB::connect("{$db['type']}://{$db['usrname']}:{$db['passwd']}@{$db['host']}/{$db['dbname']}");
                  if (
                  DB::isError($db)) die($db->getMessage());

                  $db->setFetchMode(DB_FETCHMODE_OBJECT);

                  $db->query($query);

                  ?>
                  .. und mit php-cli ausgeführt (geht auch mit dem browser)
                  mfg,
                  [color=#0080c0]Coragon[/color]

                  Kommentar


                  • #10
                    So nun hab ich s gelöst...Vorab mit batch hats leider nich geklappt ....

                    Also nochmals vom anfang. Ich exportiere aus unserem Auftragsverwaltungssystem mit verdammt lahmer DB und minimalen Suchmöglichkeiten täglich alle Kunden in eine .txt-Datei. Dies geschieht über einen täglichen task und per batch-datei.

                    Nun zur eigentlichen Lösung. Da ich wissen will ob "heute" die txt/csv-Datei bereits in MySQL importiert wurde frage ich die datei update.txt, welche bei jedem import geändert wird, ab.

                    PHP-Code:
                    $file "update.txt";
                        if (
                    file_exists($file)) {             //existiert das file
                        
                    @$updatedatum filemtime("update.txt");      //änderungsdatum des files        
                        
                    @$dateidatum date("d.m.Y"$updatedatum); //änderungsdatum in variable speichern
                         
                        
                    $datumheute  date("d.m.Y"); } //heutiges datum speichern
                        
                    else {                               //file existiert nicht, gehe zu seite import.php
                        
                    echo "<SCRIPT language=\"JavaScript\">location.href=\"import.php\";</SCRIPT>" ;
                        }
                        
                    if(
                    $datumheute <> $dateidatum) { 
                    //Upload Datum und Änderungsdatum des files stimmen überein, sonst gehe zu seite import.php

                    echo "<SCRIPT language=\"JavaScript\">location.href=\"import.php\";</SCRIPT>";



                    Seite import.php

                    PHP-Code:
                                 // Connect zur Datenbank
                                
                    mysql_connect($db_Hostname[$select_db], $db_UserName[$select_db], $db_Password[$select_db]) || die("Can't Connect to Database: ".mysql_error());
                                
                    mysql_select_db($db_Database[$select_db]);

                                
                    // Bisherige Daten aus der Datenbank l&ouml;schen
                                
                    $del "DELETE FROM ".$db_Table[$select_db];

                                
                    // CSV-Datei in die Datenbank &uuml;bertragen
                                
                    $sql "LOAD DATA INFILE '$db_File[$select_db]' REPLACE INTO TABLE ".$db_Table[$select_db]." FIELDS TERMINATED BY '$db_Terminated[$select_db]'";

                                
                    // MySQL-Statements ausf&uuml;hren
                                
                    if (mysql_query ($del) and mysql_query ($sql)) {
                                    
                    $message "&Uuml;bertragung erfolgreich";
                                    }
                                else {
                                    
                    $message "&Uuml;bertragung fehlgeschlagen. Grund: "mysql_error ();
                                    }
                    $fh fopen("./update.txt""w");  // Datei erstellen update.txt
                    fwrite($fh,"update");                    // Datei schreiben
                    fclose($fh);                                   // Datei schliessen
                                  
                    Header("Location: [url]http://192.168.1.99[/url]"); //weiterleitung zur index.php
                    exit(); 
                    So.. das ist nun meine lösung. Für konstruktive Kritik danke ich, sonst verzichte ich gerne

                    Greez

                    Und ja, ich weiss, dass das Ganze ohne JS nicht funktioniert. Brauch das Script halt nur im Intranet..
                    _____________
                    Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
                    [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

                    Kommentar

                    Lädt...
                    X