2009-08-07 77 views
0

我如何從一個行中的所有數據從導出到文本文件MySQL表,但格式是這樣的:在另一個PHP或MySQL的命令 - 從MySQL行數據轉換成文本文件

  • 一個領域,一個每行
  • 我想打破這些數據成塊,並保存例如在file1.txt中50行然後在file2.txt中下一個50,直到結束(這不是整數,所以最後一個文件可能會有更少的行)
  • 不復制相同的條目/刪除重複項

...使用PHP腳本或只是MySQL控制檯?

回答

0

我討厭做人的功課/工作,但這個太簡單了。

<? 

    $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); 
    ?> 

今天吃吧,學會再釣魚!

+0

所以,他打算複製和粘貼和什麼也沒學到:)但你該死的權利* G – 2009-08-07 21:31:50

+0

無法複製並永遠粘貼。最終他會學習,或者僱用像你或我這樣的人來清理他的爛攤子。 – 2009-08-07 21:35:59

+0

我會使用'SELECT DISTINCT'而不是手動刪除模糊,或者至少使用PHP內置的array_unique。 – mpen 2009-08-07 21:39:25

2

我可能會做這種方式,使用命令行客戶端:

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

+1很酷。那些偉大的perl單行者的reminids。哦,是的,你忘了清楚;) – 2009-08-07 21:38:25

+0

黑客! 5美元說他不會理解你寫的一半或如何運行它。 – mpen 2009-08-07 21:40:31

+0

嘿!在這裏看到我最喜歡的Perl黑客攻擊:http://stackoverflow.com/questions/303876/what-is-your-best-programming-experience/303992#303992 – 2009-08-07 21:52:01