2009-08-07 17 views
0

Wie bekomme ich alle Daten aus einer Reihe von MySQL-Tabelle in Textdateien exportiert, aber formatiert diese Weise:Php oder Mysql Befehle - Daten aus MySQL Zeile in Textdatei

  • ein Feld unter anderen, eine pro Zeile
  • Ich möchte diese Daten in Stücke brechen und zum Beispiel 50 Zeilen in file1.txt dann nächste 50 in file2.txt usw. bis zum Ende speichern (es ist keine runde Zahl, so dass die letzte Datei wahrscheinlich weniger Zeilen hätte)
  • identische Einträge nicht kopieren/Duplikate löschen

... mit PHP-Skript oder nur MySQL-Konsole?

Antwort

0

Ich hasse es, die Hausaufgaben/Arbeit zu tun, aber diese ist einfach zu einfach.

<? 

    $row = mysql_fetch_array($rc); 

    $nodupes = array(); 
    foreach ($row as $field) 
    { 
     $nodupes[$field] = $field; 
    } 

    $i = 1; 
    $filenum = 0; 
    $line = 50 ; // create new file ever 50 lines 
      $text = ""; 
    foreach($nodupes as $field) 
    { 
     $i++; 
     $text .= "$field\n"; 

     // to split into bite size peices 
     if ($i % $line == 0) 
     { 
      $filenum++; 
      $filename = "myfile_$filenum.txt"; 
      file_put_contents($filename,$text); 
      $text = ""; 
     } 
    } 
    $filenum++; 
    $filename = "myfile_$filenum.txt"; 
    file_put_contents($filename,$text); 
    ?> 

So essen heute, und lernen, einen anderen Tag zu fischen!

+0

Also, er wird es kopieren und einfügen und nichts gelernt :) Aber du verdammt Recht * g –

+0

Sie können nicht kopieren und für immer einfügen. Irgendwann wird er entweder lernen oder jemanden wie dich oder ich einstellen, um sein Durcheinander aufzuräumen. –

+0

Ich hätte eine 'SELECT DISTINCT' verwendet, anstatt die Dupes manuell zu entfernen, oder zumindest die in array_unique eingebaute PHP-Funktion zu verwenden. – mpen

2

Ich könnte es auf diese Weise tun, mit dem Kommandozeilen-Client:

$ mysql --user=XXX --password=XXX --batch --skip-column-names \ 
    -e "SELECT userid, displayname FROM Users" stackoverflowdb | \ 
split -l 50 -a 5 - "result." 
+0

+1 Sehr cool. Erinnerungen an diese großen Perl One Liner. Oh ja, du hast das deutlich vergessen;) –

+0

Hacker !!! $ 5 sagt, er wird die Hälfte von dem, was Sie geschrieben haben, nicht verstehen oder wie Sie es ausführen. – mpen

+0

Heh! Siehe meinen Lieblings-Perl-Hack hier: http://stackoverflow.com/questions/303876/what-is-your-best-programming-experience/303992#303992 –