Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Eksport bazy danych
Forum PHP.pl > Forum > Przedszkole
beznazwy
Witam!
Potrzebuję skryptu, który eksportował by całą bazę danych do pliku tekstowego. Zupełnie nie wiem jak się do tego zabrać, więc proszę o pomoc. Oto kod, do którego trzeba dopisać eksportowanie.

  1. <?php
  2. // Łączenie z bazą danych i wybieranie bazy danych //
  3. require_once ('mysql.php');
  4.  
  5. // Nazwa pliku (np. 20090131103405), rozszerzenie oraz folder //
  6. $nazwa = date ('YmdHis');
  7. $rozszerzenie = 'txt';
  8. $folder = 'sql/';
  9. $calanazwa = $nazwa . '.' . $rozszerzenie;
  10.  
  11. // Eksportowanie //
  12. $query = "EXPORT ...";
  13. $result = mysql_query ($query);
  14.  
  15. // Zapisywanie pliku w folderze $folder i o nazwie $calanazwa //
  16. ~~~ Tutaj jakieś funkcje ~~~
  17.  
  18. // Zamykanie połączenia z bazą danych //
  19. ?>
_olo_1984
krąży po forum taki kod:
  1. <?php
  2. $db_baza = 'twoja_baza';
  3. $_dump = '';
  4. $crlf = "r\n";
  5.  
  6. $time = date('Y m d, H:i', time());
  7. $_dump .= '#' . $crlf;
  8. $_dump .= '# Zrzut bazy danych ' .$db_baza.$crlf;
  9. $_dump .= '# Wygenerowano: ' . $time . $crlf;
  10. $_dump .= '#' . $crlf . $crlf;
  11.  
  12. $res = mysql_query('SHOW TABLES FROM '.$db_baza);
  13. while($row = mysql_fetch_array($res))
  14. {
  15. $table_name = $row[0];
  16. $table_fields = array();
  17.  
  18. $_dump .= '#' . $crlf;
  19. $_dump .= '# Struktura tabeli ' . $table_name . $crlf;
  20. $_dump .= '#' . $crlf;
  21.  
  22. $_dump .= 'DROP TABLE IF EXISTS ' . $table_name . ';' . $crlf;
  23. $_dump .= 'CREATE TABLE ' . $table_name . ' ( ' . $crlf;
  24.  
  25. /* Generujemy strukture tabeli. Najpierw wyciagamy pola */
  26. $res2 = mysql_query('SHOW FIELDS FROM ' . $table_name);
  27. while($fields = mysql_fetch_array($res2))
  28. {
  29. $_dump .= ' ';
  30. $_dump .= $fields['Field'] . ' ' . $fields['Type'];
  31. if (!empty($fields['Default']))
  32. {
  33. $_dump .= ' DEFAULT '' . $fields['Default'] . ''';
  34. }
  35.  
  36. if ($fields['Null'] != 'Yes')
  37. {
  38. $_dump .= ' NOT NULL';
  39. }
  40.  
  41. if (!empty($fields['Extra']))
  42. {
  43. $_dump .= ' ' . $fields['Extra'];
  44. }
  45.  
  46. $_dump .= ',' . $crlf;
  47.  
  48. $table_fields[] = $fields['Field'];
  49. }
  50.  
  51. $index = '';
  52.  
  53. /* Teraz wyciagamy pola typu KEY */
  54. $res2 = mysql_query('SHOW KEYS FROM ' . $table_name);
  55. while ($keys = mysql_fetch_assoc($res2))
  56. {
  57. $kname = $keys['Key_name'];
  58. if(($kname != 'PRIMARY') && ($keys['Non_unique'] == 0))
  59. {
  60. $kname = 'UNIQUE|' . $kname;
  61. }
  62.  
  63. $index[$kname] = array();
  64. $index[$kname][] = $keys['Column_name'];
  65. }
  66.  
  67. while(list($n, $columns) = @each($index))
  68. {
  69. if ($n == 'PRIMARY')
  70. {
  71. $_dump .= ' PRIMARY KEY (' . implode($columns, ', ') . ')';
  72. }
  73. elseif (substr($n, 0, 6) == 'UNIQUE')
  74. {
  75. $_dump .= ' UNIQUE ' . substr($n, 7) . ' (' . implode($columns, ', ') . ')';
  76. }
  77. else
  78. {
  79. $_dump .= ' KEY ' . $n . ' (' . implode($columns, ', ') . ')';
  80. }
  81. $_dump .= $crlf;
  82. }
  83.  
  84. $_dump .= ');' . $crlf;
  85. $_dump .= $crlf . $crlf;
  86.  
  87. $_dump .= '#' . $crlf;
  88. $_dump .= '# Dane z tabeli ' . $table_name . $crlf;
  89. $_dump .= '#' . $crlf;
  90.  
  91. /* Mamy juz strukture, wiec teraz czas
  92. wyciagnac dane z tabeli */
  93. $d_res = mysql_query('SELECT * FROM ' . $table_name);
  94. while ($data = mysql_fetch_array($d_res))
  95. {
  96. $_dump .= 'INSERT INTO ' . $table_name . ' (' . implode(', ', $table_fields) . ') VALUES(';
  97.  
  98. $field_count = count($table_fields);
  99. $f_data = array();
  100. for ($i = 0; $i < $field_count; $i++)
  101. {
  102. $f_data[] .= ''' . mysql_escape_string($data[$i]) . ''';
  103. }
  104. $_dump .= implode(', ', $f_data);
  105. $_dump .= ');' . $crlf;
  106. }
  107. $_dump .= $crlf . $crlf;
  108. }
  109.  
  110.  
  111. $file = fopen($db_baza.'.sql', 'w');
  112. fwrite($file, $_dump);
  113. fclose($file);
  114. header('Content-type: application/octet-stream');
  115. header("Location: ".$db_baza.".sql");
  116. ?>


z podstawieniem do swojego skryptu chyba nie będziesz miał problemów. Pozdr
erix
A nie lepiej użyć po prostu SHOW CREATE TABLE zamiast 70 linijek kodu dla samej definicji tabeli...?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.